2010-11-17 78 views
1

這一個讓我難住。ksh沒有評估反引號內的變量

#!/bin/ksh 

AWKSCRIPT='END { print "all done"; }' 

OUTPUT=`echo hello world | awk '$AWKSCRIPT'` 

RETVAL=$? 

echo "running echo hello world | awk '$AWKSCRIPT'" 
echo "Output = $OUTPUT" 
echo "returned = $RETVAL" 

輸出是

$ ./kshawk.ksh 
Output = hello world 
returned = 0 

(I期待看「輸出=全部完成」)

它看起來像計算表達式(當解釋未取代AWKSCRIPT可變如果我使用$(...)而不是反引號,我會得到相同的行爲)。

雖然我可以將AWKSCRIPT轉儲到臨時文件 - 這也必須硬編碼?

任何想法如何內插反引號內的變量?

回答

2

圍繞'$AWKSCRIPT'的單引號會阻止變量的插值。雙引號確實允許插值:

$ OUTPUT=`echo hello world | awk "$AWKSCRIPT"` 
$ echo $OUTPUT 
all done 
+0

感謝msw - 是的,它已修復它 – symcbean 2010-11-17 15:30:02