1

Я испытал что-то странное, когда работал над проблемой. Эта команда, похоже, не работает. (Используя `, чтобы заполнить пустую строку).

При использовании экспорта

> /bin/bash -c "echo $FOO; export FOO=BAR; echo $FOO"
`
`

Эта команда, однако, работает как ожидалось.

> echo $FOO; FOO=BAR; export FOO=BAR; echo $FOO
`
BAR

Та же проблема при установке с =

> /bin/bash -c "echo $FOO; FOO=BAR; echo $FOO"
`
`

Эта команда, однако, работает как ожидалось.

> echo $FOO; FOO=BAR; FOO=BAR; echo $FOO
`
BAR

Есть идеи, что происходит?

1 ответ1

2

Это проблема с двойными кавычками. Ваша оболочка ("внешняя") расширит $FOO перед запуском команды. Если вы устанавливаете $FOO на что-то (скажем, "FOO"), вы фактически запускаете эту команду.

/bin/bash -c "echo FOO; export FOO=BAR; echo FOO"

И если вы не установите FOO, вы запускаете эту команду

/bin/bash -c "echo ; export FOO=BAR; echo "

Пожалуйста, используйте одинарные кавычки, чтобы получить то, что вы ожидаете.

/bin/bash -c 'echo $FOO; FOO=BAR; echo $FOO'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .