根据我对命令替换的理解,这应该可以,但是不能,您能解释一下为什么以及如何做这样的事情。
cd ..; echo 123
cd $(echo "..; echo 123")
命令替换结果未经过所有解析阶段;他们only经历了单词拆分[1]和全局扩展[2]。
这意味着您的结果等同于:
cd "..;" "123"
...分号被视为文字文本,而不是shell语法。
这是一个功能,而不是错误:如果将命令替换结果解析为语法,则基本上不可能编写用于处理不受信任数据的安全Shell脚本。
[[1]将结果分成IFS
中字符的“单词”-或默认为空格。[[2]查看是否将每个结果词视为文件名匹配模式,如果可以,则将其与本地文件系统匹配。