awk
не выходит и не получает переменные оболочки для вас, вы должны передать их как awk
переменные:
pax> export x=XX
pax> export y=YY
pax> awk 'BEGIN{print x "_" y}'
_
pax> awk -vx=$x -v y=$y 'BEGIN{print x "_" y}'
XX_YY
Существует еще один способ сделать это, используя двойные кавычки вместо одинарных кавычек (так что bash
подставляет значения до того, как awk
их увидит), но затем вам нужно начать экранировать символы $
и все другие вещи в вашей awk
команде:
pax> awk "BEGIN {print \"${x}_${y}\"}"
XX_YY
Я предпочитаю использовать явное создание переменных.
Кстати, есть другое решение вашего предыдущего вопроса здесь , которое должно работать.