使用变量并使用awk命令打印第二个字段时遇到一些麻烦。我试图从文件中的值中获取一个数字。文件中的值类似于
MAX = 10000(我只想要数字),我将它传递给脚本中的变量,所以在脚本中我有变量
parm_file=ParmFiles/Parmfile.parm
session=s_session_value
OLD_MAX_SEQ_NR=`awk -F '=' "/$session/ {getline; print $2}" < $parm_file`
因为我有双引号来标识$ session变量,它也将$ 2作为变量,所以它只是打印整行,而不是第二个字段。
我也尝试将变量传递给awk命令,如
OLD_MAX_SEQ_NR=`awk -F '=' \
-v var="$session" \
'/var/ {getline; print $2}' < $parm_file`
但似乎并没有将变量放在var
所在的位置。我甚至尝试过对-v var="s_session_value"
进行硬编码,但它不起作用。
我无法找到一种方法让命令看起来像$2
一样,而不是变量。任何帮助将不胜感激。
答案 0 :(得分:0)
如果没有parm文件的示例行,这有点棘手。但我不明白为什么你不使用cut
,它会让它变得更容易?
OLD_MAX_SEQ_NR=$(grep "$session" "$parm_file" | cut -d= -f2)
答案 1 :(得分:0)
试试这个:
parm_file=ParmFiles/Parmfile.parm
session=s_session_value
OLD_MAX_SEQ_NR=$(
awk -F'=' -v pat="$session" \
'$0 ~ pat {getline; print $2}' < "$parm_file"
)
awk
定义awk变量,将shell变量传递给-v
。 /../
内使用变量视为文字。所以使用$0~var_name
construct。$(..)