Как я могу передать переменную из awk в bash?
Я хочу передать много переменных, поэтому я не использую:
x=$(awk '.....)
Я думаю, что это не полезно.
Как я могу передать переменную из awk в bash?
Я хочу передать много переменных, поэтому я не использую:
x=$(awk '.....)
Я думаю, что это не полезно.
предполагая, что Вы доверяете входящим данным, которые обрабатывает awk.
вы можете иметь awk распечатать объявления переменных оболочки, и source
вывод awk, как будто это файл оболочки:
source <(
awk '
# ....
print "var1=" value1
print "var2=" value2
# ....
' input
)
echo "shell var1 = $var1"
echo "shell var2 = $var2"
это общая проблема, которая уже появилась во многих вариантах на StackExchange, например,
ответ всегда заключается в том, что процесс не может изменить среду своего родителя (и это то, что вы пытаетесь достичь, когда вы спросите awk
установить переменную среды в оболочке, которая породила его).
обычно рекомендуется использовать источник вывода, Как показал Гленн. Вы должны доверять программе,. Вы в основном выполняете произвольный код.
другой, немного отличается, решение будет выводить var=value
строки к именованному файлу и источнику этого файла. (Sourcing в основном выполняет содержимое файла в текущей оболочке, как если бы вы ввели их; см. http://ss64.com/bash/source.html.) Преимущество этого подхода заключается в том, что можно проверить содержимое этого файла перед его поиском.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]