简单命令扩展(SIMPLE COMMAND EXPANSION)

当执行一个简单命令时,shell 进行下列扩展,赋值和重定向,从左到右。

1.

解释器标记为与变量赋值 (在命令名之前的) 和重定向有关的词被保存等待随后处理。

2.

并非变量赋值或重定向的词被扩展。如果扩展后仍然有词保留下来,第一个词被 作为命令名,其余词是参数。

3.

重定向按照上面 REDIRECTION 中讲到的规则进行。

4.

每个变量赋值中 = 之后的文本在赋予变量之前要经过波浪线扩展, 参数扩展,命令替换,算术扩展和引用删除。

如果没有得到命令名,变量赋值影响当前 shell 环境。否则,变量被加入 被执行的命令的环境中,不影响当前 shell 环境。如果任何赋值动作试图 为只读变量赋值,将导致出错,命令以非零状态值退出。

如果没有得到命令名,重定向仍会进行,但是不影响当前 shell 环境。 重定向出错将使命令以非零状态值退出。

如果扩展后有命令名保留下来,那么执行过程如下所示。否则,命令退出。 如果在任何扩展中包含命令替换,那么整个命令的退出状态是最后一个命令 替换的退出状态。如果没有进行命令替换,命令以状态零退出。