2010-11-17 39 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