下面是代码:
for i in "${x[@]}"
do
z+=$(awk '$1 == '$i' {print $2}' $file)
done
echo "${z[@]}"
它给出了以下错误和期望的输出:
awk: cmd. line:1: $1 == {print $2}
awk: cmd. line:1: ^ syntax error
我猜测当$1
值与值不匹配时$i
,它会显示此错误。
有人可以告诉我如何处理这个问题吗?
我尝试过-v
:
z+=$(awk -v '$1 == '$i' {print $2}' $file)
但这是致命的:
awk: fatal: `$1 ' is not a legal variable name
答案1
将 $i 作为变量传递给 awk ,因此:
z+=$(awk -v vari="$i" '$1 == vari {print $2}' "$file")