Вы сделали две ошибки. Первый - это синтаксис
var=val some_command
создает временную экспортируемую переменную, видимую только для some_command
. Он не будет существовать после завершения этого утверждения. Таким образом, ваше последующее использование custom_var
будет иметь любое значение, если оно вообще было, до запуска этого оператора.
Вторая ошибка в том, что вы не понимаете, как оболочки POSIX 1003 расширяют переменные, и чем отличаются переменные env от переменных не env. custom_var
передается «сценарию command
». Проблема в том, что вы пытаетесь проверить, требует ли родительская оболочка, в которой вы выполняете эти команды, расширения переменных. Попробуйте это вместо этого. Создайте файл с именем / tmp / cvar с таким содержанием:
echo custom_var is $custom_var
env | grep custom_var
Затем введите
custom_var=myValue sh /tmp/cvar