【问题标题】:"echo" output different answer by sh and bash"echo" 通过 sh 和 bash 输出不同的答案
【发布时间】:2018-04-10 07:58:49
【问题描述】:

我使用三种方式运行我的脚本,但输出不同,你能解释一下为什么它会这样工作吗?谢谢!! 这是我的脚本

#!/bin/bash
#Program:
#     This program shows "Hello World!" in your screen.
echo -e "Hello World! \a\n" 
exit 0

如果我通过 bash 和 ./ 像 bash sh01.sh 运行它,输出是

世界你好!

但是,如果我像 sh sh01.sh 一样使用 sh,它会像

-e 你好,世界!

还有一些其他信息

  1. 操作系统:Ubuntu 16.04.3
  2. 输入 sh -> 破折号

【问题讨论】:

标签: linux bash shell echo dash-shell


【解决方案1】:

echo 不是很便携(即使是 Bash 的 echo 在编译 Bash 时可能使用不同默认选项的不同操作系统上的行为也可能不同)。您可以使用printf。根据posix:

除非-n(作为第一个参数)和转义序列都被省略,否则不可能在所有 POSIX 系统中可移植地使用 echo。 printf 实用程序可用于模拟echo 实用程序的任何传统行为[...]

【讨论】:

  • 是的,当 OS X v10.5 附带 bash 使用不同的选项编译时,我的一堆使用 echo -n 的脚本坏了。他们在稍后的更新中将其切换回来,但我不知道确切的时间,因为我已将所有脚本切换为使用 printf 代替。 printf 使用起来比 echo 稍微复杂一些,但方式更容易预测。
  • 谢谢!后来,我又遇到了一些类似的情况,比如 newgrp,在 ubuntu 和 OSX 中表现不同。 TT。现在我知道为什么了。
猜你喜欢
  • 2017-05-01
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 2018-06-28
  • 2015-04-02
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
相关资源
最近更新 更多