【问题标题】:using a bash variable and substitution inside an awk statement在 awk 语句中使用 bash 变量和替换
【发布时间】:2013-12-07 06:37:15
【问题描述】:

我尝试做的是这样的:

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 输出。我的哪一项陈述不正确?

谢谢。

【问题讨论】:

    标签: bash shell awk


    【解决方案1】:

    当您将 vars 传递给 awk 时:

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

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

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

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

    【讨论】:

    • 转义变量解决了我的问题。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 2015-04-01
    • 2014-09-20
    相关资源
    最近更新 更多