bash -c «v = значение; echo $ v ”ничего не отображает

Выполнение следующего из экрана командной строки:

bash -c "v=value; echo $v"

ничего не отображает. Все нормально? Как я могу присвоить значение переменной внутри этого вида выполнения?

9
задан 15 June 2016 в 02:09

2 ответа

Существует две оболочки, включенные здесь:

  • оболочка вызова, интерактивная оболочка, от которой Вы выполняете это

  • невход в систему, неинтерактивная оболочка, порожденная bash -c

Теперь, проблема, в двойных кавычках, переменные расширены до своих соответствующих значений, это верно для любой оболочки.

Так, поскольку Вы использовали двойные кавычки, переменное расширение, $v, на самом деле происходит в оболочке вызова, не названной оболочке. Но объявление, v=value, происходит на названной неинтерактивной оболочке.

Так, всего, Вам определили переменную в названной оболочке и расширенный (заранее) в оболочке вызова. Поскольку переменная значения сброшена в оболочке вызова, следовательно Вы ничего не получаете в выводе.

Теперь, для создания определения переменной и расширения для происхождения в порожденной оболочке, одинарных кавычках использования или выходят $:

$ bash -c "v=value; echo $v"

$ bash -c 'v=value; echo $v'
value

$ bash -c "v=value; echo \$v"
value
18
ответ дан 15 June 2016 в 02:09

С двойными кавычками $v заменен интерактивной оболочкой. Используйте одинарные кавычки:

$ bash -c 'v=value;echo $v'
value
1
ответ дан 15 June 2016 в 02:09

Другие вопросы по тегам:

Похожие вопросы: