linux - Bash:如何使用两个单独的 echo 命令回显 "hey"和 ", how are you?"?

标签 linux bash shell ubuntu terminal

我是 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/

相关文章:

c++ - 在 Linux 中编译 FLTK 应用程序

BASH MySQL 查询以逗号分隔的文件

bash - 跟踪不断更新的日志文件并在找到字符串时执行操作

shell - 提取目录路径和文件名

c - pthread_mutex_timedlock() 过早退出而不等待超时

linux - 使 calloc 机会化

python - python 3.5 的本地安装找不到它的库

linux - 在shell脚本中将文件从两台机器移动到四台机器

bash - 如何替换任意数量的命令行参数中的每个分隔符,这些参数都是分隔的名称-值对?

linux - Bash - 如何在这种情况下调用函数