我试图在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发布于 2011-08-20 05:16:04
$commentValue在对nawk的调用中,因此它在nawk中被视为变量,而不是bash中的变量。因为在nawk中没有这样的变量,所以在那里不会得到任何东西。您应该首先使用-v开关传递变量"inside“nawk,就像您对now变量所做的那样;即:
... | nawk -F";" -v now=$now -v "commentValue=$commentValue"请注意引号-如果$commentValue包含空格,则引号是必需的。
https://stackoverflow.com/questions/7127462
复制相似问题