New*_*nux 0 bash dash command-substitution
为什么当您运行替换命令时,执行顺序会被破坏,如下例所示。首先chmod执行命令,echo 1然后echo 2?
echo $(echo 1; echo 2; chmod 444 nonexistent_file)
Run Code Online (Sandbox Code Playgroud)
结果:
chmod: Cannot access 'nonexistent_file': No such file or directory
1 2
Run Code Online (Sandbox Code Playgroud)
执行顺序没有被破坏,输出顺序也不是您所期望的。
\necho 1并echo 2执行,将它们的输出写入标准输出,shell 会累积这些输出以用于命令替换。然后chmod执行,并将其错误消息输出到标准错误,该错误消息直接进入终端,因此首先出现。最后,外部echo运行命令替换的结果 \xe2\x80\x9c1 2\xe2\x80\x9d。