1

我试图nawk在 bash 脚本中传递一个变量,但它实际上并没有打印$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
4

1 回答 1

2

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

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

$commentValue注意引号 - 如果包含空格,它们是必需的。

于 2011-08-19T21:16:04.090 回答