2014-12-15 5 views
1

Я пытаюсь установить переменный перед вызовом команды в Баше (на Mac):Невозможно установить переменные окружения перед командой

BRANCH=test echo "$BRANCH" 

Но я получаю пустое эхо.

printenv также не имеет никакой другой переменной с таким же именем:

$ printenv | grep BRANCH 
$ 

Что я делаю неправильно?

ответ

2

Это правильный путь:

BRANCH='test' bash -c 'echo "$BRANCH"' 
test 

Чтобы выполнить команду echo вам нужно bash -c выполнить его после назначения.

+0

В чем разница между 'BRANCH = 'test' bash -c 'echo" $ BRANCH "' и' BRANCH = 'test' echo "$ BRANCH" '? –

+0

Вы также можете использовать: '(BRANCH = 'test' && echo" $ BRANCH ")' Я предполагаю, что в первом случае назначение не обрабатывается, если 'bash -c' не создает новый подпроцесс. – anubhava

+1

Я думаю, [этот ответ] (http://stackoverflow.com/a/10938530/454103) объясняет это хорошо. –

Смежные вопросы