【发布时间】:2017-02-13 16:33:31
【问题描述】:
我阅读了 bash 手册的一部分。项目是“命令执行环境”。部分说,
作为管道一部分调用的内置命令也在子 shell 环境中执行。对子 shell 环境所做的更改不会影响 shell 的执行环境。
我想这意味着管道中更改的值是本地的,因为管道中的每个命令都在其自己的子 shell 中运行。喜欢以下,
value='1'
echo "Before pipe, ${value}"
value='2' | echo "${value}" | value='3' | echo "In another pipe, ${value}"
echo "After pipe, ${value}"
Before pipe, 1
In another pipe, 1
After pipe, 1
我在 bash 中阅读了“SHELL BUILTIN COMMANDS”。但我找不到“=”作为内置命令。 “内置命令”在这里是什么意思?是否有“非内置命令”可以影响全局变化,即使在管道中?
如果您不介意,请在新的子 shell 运行时告诉我,除了:
(...)- 管道
|
【问题讨论】:
-
没有明确说明,但赋值本身实际上是退出状态为 0 的命令(假设值中没有嵌入命令替换或进程替换)。