Bash 在这个命令替换中发生了什么?

Bash 在这个命令替换中发生了什么?,bash,expansion,command-substitution,Bash,Expansion,Command Substitution,我编写了以下命令替换并在bash shell中执行: $(echo echo 1; echo 2; echo 3) #output: 1 2 3 为什么在第一个表达式中需要双echo,而在第二个和第三个表达式中只需要单echos?这与您实际要求shell执行的操作有关。具体如下: “Echo-the-result of-Echo 1;Echo 2;Echo 3”这是我从Echo$(Echo 1;Echo 2;Echo 3)中期望得到的结果,但是当我阅读原始文本时,我看到了由分隔的每个表达式我认

我编写了以下命令替换并在bash shell中执行:

$(echo echo 1; echo 2; echo 3) #output: 1 2 3

为什么在第一个表达式中需要双
echo
,而在第二个和第三个表达式中只需要单
echo
s?

这与您实际要求shell执行的操作有关。具体如下:


“Echo-the-result of-Echo 1;Echo 2;Echo 3”

这是我从
Echo$(Echo 1;Echo 2;Echo 3)
中期望得到的结果,但是当我阅读原始文本时,我看到了由
分隔的每个表达式我认为这会终止第一次回音。相反,第一个回波通过
我不知道这是可能的…每个令牌从空间到
被视为子命令(在第一个命令之后)。亚壳很奇怪。我一直认为shell扩展的工作方式有点像perl中的-e开关,但我想它还有更多。。