这个让我难过。
#!/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
(我当时希望看到“输出=全部完成”)
在评估表达式时,解释器似乎没有替换AWKSCRIPT变量(如果我使用$(...)而不是反引号,我会得到相同的行为)。
虽然我可以将AWKSCRIPT转储到临时文件中 - 但这也必须是硬编码的?
如何在反引号内插入变量?
答案 0 :(得分:2)
'$AWKSCRIPT'
周围的单引号阻止了变量的插值。双引号允许插值:
$ OUTPUT=`echo hello world | awk "$AWKSCRIPT"`
$ echo $OUTPUT
all done