ksh не оценивает переменную в пределах обратных кавычек - PullRequest
1 голос
/ 17 ноября 2010

Это меня поставило в тупик.

#!/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 во временный файл -это тоже должно быть жестко закодировано?

Есть идеи, как интерполировать переменную в обратных тиках?

1 Ответ

2 голосов
/ 17 ноября 2010

Одинарные кавычки около '$AWKSCRIPT' предотвращают интерполяцию переменной. Двойные кавычки допускают интерполяцию:

$ OUTPUT=`echo hello world | awk "$AWKSCRIPT"`
$ echo $OUTPUT
all done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...