我是 Bash 的新手,我正在尝试学习如何首先使用 | 执行两个命令符号,其次如何将两个命令连接成一个复合命令。
当在一行中写两个命令时,管道符号 |旨在将第一个命令的输出连接到第二个命令的输入。所以我不太明白它为什么不能加入“嘿”和“你好吗?”。
echo "hey" | echo ", how are you?"
编写复合命令时,命令应位于左大括号和右大括号之间,并用分号分隔。在这种情况下
{ echo "Hey"; echo ", how are you" }
,但它似乎没有按预期工作。
对于这两种情况,我在这里可能遗漏了什么?
最佳答案
简短版本:使用 printf
而不是 echo
。
echo
不从其标准输入中读取,因此管道实际上与
echo "hey"; echo ", how are you?"
这是两个独立的命令,每个命令在最后一个参数后打印一个隐式换行符。
您的大括号命令失败,因为在最后一个命令之后需要分号或换行符:{ echo "Hey"; echo ", 你好吗";
。
不过,您的问题的答案是您需要抑制 echo
打印的换行符。
echo -n "hey"; echo ", how are you?"
这适用于 bash
,但不是所有的 shell,因为 -n
选项是非标准的。 printf
更可靠:
printf "hey"; printf ", how are you?\n"
关于linux - Bash:如何使用两个单独的 echo 命令回显 "hey"和 ", how are you?"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40383082/