これは私を困惑させました。
#!/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 を一時ファイルにダンプできますが、これもハードコーディングする必要がありますか?
バックティック内で変数を補間する方法はありますか?