Linux 为什么不是';";总目-n“;在通过管道传输到两个echo命令后工作?

Linux 为什么不是';";总目-n“;在通过管道传输到两个echo命令后工作?,linux,bash,Linux,Bash,我运行了以下命令: echo "a"; echo "b" | head -n1 并预期这一结果: <p>a</p> a 但我得到的却是: <p>a</p> <p>b</p> a b 为什么我没有得到预期的结果?我的命令有错误吗?对你的陈述的评估顺序是: echo "a"; (echo "b" | head -n1) 因此,要覆盖,请使用: (echo "a"; echo "b") | head -n1 就这样…

我运行了以下命令:

echo "a"; echo "b" | head -n1
并预期这一结果:

<p>a</p>
a

但我得到的却是:

<p>a</p>
<p>b</p>
a

b


为什么我没有得到预期的结果?我的命令有错误吗?

对你的陈述的评估顺序是:

echo "a"; (echo "b" | head -n1)
因此,要覆盖,请使用:

(echo "a"; echo "b") | head -n1

就这样…

分隔命令,也分隔链。如果您想将命令组合在一起,可以使用
{
}
也可以使用卷发,我认为这不会产生子shell-
{echo“a”echo“b”}head-n1