Рейтинг:0

Можно ли использовать envsubst для замены переменных среды в заданной переменной, а не в файле?

флаг cn

Я знаю, что могу использовать envsubst команда для замены переменных среды внутри файла и записи их в выходной файл:

envsubst < input.txt > output.txt

Однако теперь у меня есть только переменная, а не файл. Но мне все еще нужно заменить любую переменную среды внутри него.

export original_text="Привет, $name, пожалуйста, подойдите сюда, $date"
# Я хочу иметь возможность заменять $name и $date в оперативной памяти, а не на диске и в файлах
экспорт $name="Джон"
экспорт $date="завтра"
output=$(envsubst < $original_text) # это псевдокоманда
эхо $ вывод
# prints => Привет, Джон, пожалуйста, приходи сюда завтра

Является ли это возможным? Как это сделать?

Рейтинг:2
флаг in

Да, вы можете использовать здесь строку: <<< "$ переменная"

Ваш original_text должен быть заключен в одинарные кавычки, иначе переменные будут заменены при создании Оригинальный текст.

$ original_text='Здравствуйте, $name, пожалуйста, подойдите сюда, $date'
$ экспортное имя = "Джон"
$дата экспорта="завтра"
$ envsubst <<< "$original_text"
Привет, Джон, пожалуйста, приходи сюда завтра

Конечно, вы можете сохранить его в переменной, как обычно:

вывод=$(envsubst <<< "$original_text")

Вы также можете подключиться к envsubst, например:

$ printf '%s\n' "$var" | envsubst
Привет, Джон, пожалуйста, приходи сюда завтра
Saeed Neamati avatar
флаг cn
Круто, как я могу получить результат в переменной вместо командной строки?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.