Bash:你怎么回应“嘿”和“,你好吗?”有两个独立的echo命令?

时间:2016-11-02 14:56:02

标签: linux bash shell ubuntu terminal

我是Bash的新手,我正在尝试学习如何使用|来首先执行两个命令符号,其次是如何将两个命令连接到复合命令中。

当在一行中写入两个命令时,管道符号|用于将第一个命令的输出连接到第二个命令的输入。所以我不太明白它是如何加入“嘿”和“,你好吗?”。

    echo "hey" | echo ", how are you?" 

编写复合命令时,命令应位于以分号分隔的左括号和右括号之间。在这种情况下

    { echo "Hey"; echo ", how are you" }

,但它似乎没有按预期工作。

对于这两种情况,我可以在这里错过什么?

1 个答案:

答案 0 :(得分:5)

简短版本:使用printf代替echo

echo不读取其标准输入,因此管道实际上与

相同
echo "hey"; echo ", how are you?"

这是两个单独的命令,每个命令在最后一个参数之后打印一个隐式换行符。

您的大括号命令失败,因为在最后一个命令后需要使用分号或换行符:{ echo "Hey"; echo ", how are you"; }

但问题的答案是,您需要取消echo打印的换行符。

echo -n "hey"; echo ", how are you?"

这适用于bash,但不适用于所有shell,因为-n选项是非标准的。 printf更可靠:

printf "hey"; printf ", how are you?\n"