我正在尝试在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
答案 0 :(得分:2)
$commentValue
位于nawk
的调用范围内,因此它被视为nawk
中的变量,而不是bash
中的变量。由于你在nawk
中没有这样的变量,所以你不会得到任何东西。您应该首先使用nawk
开关传递变量“inside”-v
,就像您对now
变量所做的那样;即:
... | nawk -F";" -v now=$now -v "commentValue=$commentValue"
注意引号 - 如果$commentValue
包含空格,则需要它们。