Как развернуть переменную «чтение» из терминала - PullRequest
1 голос
/ 03 мая 2020

Например,

создать скрипт bash tmp.sh со следующим:

export tmp=abc
read _test
echo "$_test"

Выполнить bash tmp.sh

Ввод '$ tmp / def '.

Ожидаемый результат:' abc / def '

Фактический результат:' $ tmp / def '

Ответы [ 2 ]

1 голос
/ 03 мая 2020

отметьте это

 eval "echo $_test"

или

bash -c "echo $_test"

Редактировать В последнем (bash -c) используется субоболочка, безопасная по сравнению с eval

0 голосов
/ 04 мая 2020

Вы можете использовать команду envsubst для замены переменных окружения следующим образом:

echo "$_test" | envsubst

или, поскольку это в bash:

envsubst <<<"$_test"

Это значительно безопаснее чем eval или bash -c, поскольку он ничего не сделает , кроме , кроме замены экземпляров $var или ${var} соответствующими значениями переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...