Я запускаю следующий скрипт:
VAR="Test"
sh -c 'echo "Hello $VAR"'
Но я получаю:
# ./test.sh
Hello
Как я могу отправить переменную VAR
моего скрипта в оболочку, созданную с помощью sh -c '...'
?
shell
shell-script
scripting
Матье Наполи
источник
источник
export var="Test"
в одну строку.Вот еще один способ передачи переменных
sh -c
(в качестве позиционных аргументов):источник
$@
работать как положено, например.sh -c 'echo "Hello $@"' _ "$VAR" "$VAR2"
`$0
отображается в сообщениях об ошибках / предупреждениях оболочкой.Если вы не хотите экспортировать их как переменные среды, вот прием, который вы могли бы сделать. Сохраните определение variabe в файл
.var_init.sh
и поместите его в свою под-оболочку следующим образом:.var_init.sh
из командной строки:
Таким образом, вы устанавливаете свои переменные только при выполнении вашей подоболочки.
источник
ENV=.var_ini.sh sh -c '...'
.var_init.sh
ожидается, что это будет искать в текущем каталоге (в отличие от$PATH
), это должно быть написано. ./var_init.sh