为什么在运行替换命令时,执行顺序被破坏,如下例所示。首先chmod
执行命令,echo 1
然后echo 2
?
echo $(echo 1; echo 2; chmod 444 nonexistent_file)
结果:
chmod: Cannot access 'nonexistent_file': No such file or directory
1 2
为什么在运行替换命令时,执行顺序被破坏,如下例所示。首先chmod
执行命令,echo 1
然后echo 2
?
echo $(echo 1; echo 2; chmod 444 nonexistent_file)
结果:
chmod: Cannot access 'nonexistent_file': No such file or directory
1 2
执行顺序没有被破坏,输出顺序不是你所期望的。
echo 1
并echo 2
执行,将它们的输出写入它们的标准输出,shell 会累积这些输出以进行命令替换。然后chmod
执行,并将其错误消息输出到标准错误,标准错误直接进入终端,因此首先出现。最后,外部echo
以命令替换的结果“1 2”运行。