Передать переменную из awk в bash

Как я могу передать переменную из awk в bash?
Я хочу передать много переменных, поэтому я не использую:

x=$(awk '.....)

Я думаю, что это не полезно.

16
задан diego9403
13.12.2022 11:13 Количество просмотров материала 2444
Распечатать страницу

2 ответа

предполагая, что Вы доверяете входящим данным, которые обрабатывает awk.

вы можете иметь awk распечатать объявления переменных оболочки, и source вывод awk, как будто это файл оболочки:

source <(
    awk '
        # ....
        print "var1=" value1
        print "var2=" value2
        # ....
    ' input
)
echo "shell var1 = $var1"
echo "shell var2 = $var2"
1
отвечен glenn jackman 2022-12-14 19:01

это общая проблема, которая уже появилась во многих вариантах на StackExchange, например,

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

обычно рекомендуется использовать источник вывода, Как показал Гленн. Вы должны доверять программе,. Вы в основном выполняете произвольный код.

другой, немного отличается, решение будет выводить var=value строки к именованному файлу и источнику этого файла. (Sourcing в основном выполняет содержимое файла в текущей оболочке, как если бы вы ввели их; см. http://ss64.com/bash/source.html.) Преимущество этого подхода заключается в том, что можно проверить содержимое этого файла перед его поиском.

0
отвечен Edward 2022-12-14 21:18

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх