Объединить xargs -I с sed

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

Вы можете проверить это напрямую с помощью косвенного обращения к переменной :

$ x=hello
$ echo Result is $(y=x ; echo ${!y} ; echo world)
Result is hello world

Переменная x определенно доступна непосредственно в подоболочке (вместо того, чтобы ее значение было ранее расширено), потому что $ {! y} читает из переменной, чье имя хранится в y - которой не существовало на момент создания подоболочки.


Благотворительное прочтение отрывка из книги будет означать, что «переменная» недоступна, потому что вы не можете постоянно изменять ее значение. Любые назначения переменных, которые вы делаете в подоболочке, впоследствии недоступны для родительской оболочки, будь то создание новых переменных (например, y ) или присвоение значений замены существующим переменным. Если подоболочке присвоено значение x , новое значение будет действовать внутри подоболочки, но последующее чтение из него даст исходное значение:

$ x=world
$ echo $(x=hello ; echo $x)
hello
$ echo $x
world

Это не очень ясный способ выразить это, по крайней мере, в процитированный вами отрывок. Если такова вся книга, возможно, вы сможете найти лучшую (или вместо этого прочитать вопросы здесь).

2
07.11.2015, 21:37
0 ответов

Теги

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