在bash中将变量传递给nawk?

时间:2011-08-19 21:09:49

标签: bash variables nawk

我正在尝试在bash脚本中将变量传递给nawk,但它实际上并没有打印$commentValue变量的内容。一切都很好,除了printf语句的最后一部分。谢谢!

echo -n "Service Name: "

read serviceName

echo -n "Comment: "

read commentValue

for check in $(grep "CURRENT SERVICE STATE"  $nagiosLog |grep -w "$serviceName" | nawk -F": " '{print $2}' |sort -u ) ; do
    echo $check | nawk -F";" -v now=$now '{ printf( "[%u]=ACKNOWLEDGE_SVC_PROBLEM;"$1";"$2";2;1;0;admin;$commentValue"\n", now)}' >> $nagiosCommand

done

1 个答案:

答案 0 :(得分:2)

$commentValue位于nawk的调用范围内,因此它被视为nawk中的变量,而不是bash中的变量。由于你在nawk中没有这样的变量,所以你不会得到任何东西。您应该首先使用nawk开关传递变量“inside”-v,就像您对now变量所做的那样;即:

... | nawk -F";" -v now=$now -v "commentValue=$commentValue"

注意引号 - 如果$commentValue包含空格,则需要它们。