LINUX.ORG.RU

echo $Переменная | awk '{действия}'
outsider ★★
()
Ответ на: комментарий от outsider

нет. Например:

echo '1 2 3'|awk '{print $3}'

получим - 3

а вот как это значение записать в переменную окржения?

Вариант: VAR1=`echo '1 2 3'|awk '{print $3}'` не подходит.

Можно ли из самого awk?

anonymus123
() автор топика

В awk переменные окружения доступны через массив ENVIRON.

В стандарте написано, что это может зависеть от конкретной реализации awk, будет ли модификация этого массива затрагивать внешние переменные.

Как это реализовано в разных awk'ах, я пока не знаю. Скажу лишь, что в «настоящем» awk (от Кернигана) изменение ENVIRON на переменные не влияет.

anarquista ★★★★★
()
Ответ на: комментарий от anarquista

проверил gawk 4.0, mawk, busybox awk, awk из 9base. Нигде модификация ENVIRON не влияет на переменные окружения.

Но стандарт не запрещает вам сделать такую свою реализацию awk!

anarquista ★★★★★
()
Ответ на: комментарий от anarquista

anarquista> Но стандарт не запрещает вам сделать такую свою реализацию awk!

Звучит глупо. Дочерний процесс не может повлиять на окружение родителя, никак, только родитель может.

sdio ★★★★★
()
Ответ на: комментарий от anarquista

В awk переменные окружения доступны через массив ENVIRON.

Мне нужно обратное - из awk записать переменную окржения

anonymus123
() автор топика
Ответ на: комментарий от sdio

Не настолько глупо. Ведь awk может порождать дочерние процессы.

awk 'BEGIN {ENVIRON[«HELLO»]=«WORLD»;system(«echo $HELLO»)}'

что должна возвращать вот такая вот команда?

anarquista ★★★★★
()
Ответ на: комментарий от anonymus123

чем вариант с export не устраивает?
Давай попробую потелепатировать: awk это инструмент для работы с файлами с разделителями. Ты вычленяешь некое значение, которое хочешь передать вовне.
export тут выше крыши

zolden ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.