Это меня поставило в тупик.
#!/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
(я ожидал увидеть "Output = all done")
Itпохоже, что интерпретатор не подставляет переменную AWKSCRIPT при вычислении выражения (я получаю то же поведение, если использую $ (...) вместо обратных галочек).
Хотя я могу вывести AWKSCRIPT во временный файл -это тоже должно быть жестко закодировано?
Есть идеи, как интерполировать переменную в обратных тиках?