система
Linux hosek 4.15.0-48-generic #51-Ubuntu SMP Wed Apr 3 08:28:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
вопрос
Мне нужно получить вывод в виде команд, в сценарии bash, для хранения переменных.
пример
sed -n '/# Main configuration./,/# Websites./p' webcheck-$category.cfg | sed '1,1d' | sed '$ d'
Эта команда возвращает эти строки:
email_sender='some@email.com'
email_recipients='another@email.com'
Как я могу прочитать / запустить эти выходные данные / строки как команды в сценарии? Сохраняет ли этот вывод в файл и затем читает его source
только по команде?
Я попытался | source
в конце команды, но она читает только из файлов.
Я пытался echo
в начале, но это не имело никакого эффекта.
Спасибо.
источник
for var in email_sender email_recipient email_subject email_attachement etc ; do printf -v "${var}" '%s' "$(grep -oP $var'=\K.*' webcheck-$category.cfg)"; done
однако это не соответствует «простым» критериям.Вы можете использовать процесс подстановки :
источник
или
Вывод:
some@email.com another@email.com
источник
Встроенное в bash read обрабатывает подобные вещи.
read
читает строки из стандартного ввода в переменные.-d ''
отключает разделение пробелов, за исключением перевода строки.-r
отключает\
побегиcmdA < <(cmdB)
работает аналогично cmdB | cmdA, за исключением предыдущего, cmdA запускается в этой оболочке, а не в подоболочке, которая требуется для правильной работы чтения.источник
var=value
?