为什么命令替换输出中的分号与原始代码中的分号不相同?

问题描述 投票:0回答:1

根据我对命令替换的理解,这应该可以,但是不能,您能解释一下为什么以及如何做这样的事情。

cd ..; echo 123

cd $(echo "..; echo 123")

bash shell echo cd command-substitution
1个回答
1
投票

命令替换结果未经过所有解析阶段;他们only经历了单词拆分和全局扩展。

这意味着您的结果等同于:

cd "..;" "123"

...分号被视为文字文本,而不是shell语法。

这是一个功能,而不是错误:如果将命令替换结果解析为语法,则基本上不可能编写用于处理不受信任数据的安全Shell脚本。

© www.soinside.com 2019 - 2024. All rights reserved.