在awk语句中使用bash变量和替换

时间:2013-12-07 06:37:15

标签: bash shell awk

我尝试做的是:

city="Houston"
var1="1"
var2="2"
var3="3"
eval parameter_${city}_${var1}=444
eval parameter_${city}_${var2}=222
eval parameter_${city}_${var3}=111
eval parameter_${city}_total=$( awk -v var1=$parameter_${city}_${var1} -v var2=$parameter_${city}_${var2} -v var3=$parameter_${city}_${var3} 'BEGIN{print var1 + var2 / var3}' )
echo $parameter_Houston_total
-nan

通常我希望输出像6,但它会产生-nan输出。我的哪一项陈述不正确?

感谢。

1 个答案:

答案 0 :(得分:2)

当你将vars传递给awk时:

-v var1=$parameter_${city}_${var1}

由于您没有使用eval,因此awk变量无法获得所需的值。而是尝试类似的事情:

-v var1=$(eval echo \$parameter_${city}_${var1})

但也许您可以将数据存储在an associative array

相关问题