2011-08-19 86 views
0

我試圖在bash腳本中將一個變量傳遞給nawk,但它實際上並不打印$commentValue變量的內容。除了printf語句的最後部分之外,一切都很好。謝謝!在bash中將變量傳遞給nawk?

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

$commentValue是調用到nawk裏面,所以它被認爲是在nawk一個變量,在bash不是變量。由於您在nawk中沒有這樣的變量,因此您不會在其中獲得任何內容。您應該先使用-v開關通過變量「inside」nawk,就像您爲now變量所做的那樣;即:

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

請注意引號 - 如果$commentValue包含空格,則需要引號。

+0

嗯,我修改了命令,但它仍然只是打印單詞「commentValue」而不是內容。 echo $ check | nawk -F「;」 -v now = $ now -v「commentValue = $ commentValue」'{printf(「[%u] = ACKNOWLEDGE_SVC_PROBLEM;」$ 1「;」$ 2「; 2; 1; 0; admin; commentValue \ n」,now)} '>> $ nagiosCommand – user63019

+0

它應該是:''echo $ check | nawk -F「;」 -v now = $ now -v「commentValue = $ commentValue」'{printf(「[%u] = ACKNOWLEDGE_SVC_PROBLEM;」$ 1「;」$ 2「; 2; 1; 0; admin;%s \ n」 commentValue)}'>> $ nagiosCommand''。請閱讀awk手冊中的''printf''文件。 –

+0

Ahhhh,duh。以前我做過,但是最後的結尾是「謝謝! – user63019