我有一个希望在不同 Linux 服务器上运行的 shell 脚本。当我使用 -e 选项运行 echo 命令并在字符串中转义字符时,它不会在 Ubuntu 12.04 或 Ubuntu 11.04 的 sh shell 上按预期执行。我希望脚本在我们使用的两台服务器上运行 CentOS 5.3 和 Ubuntu 12.04。当我在两台服务器上的 bash 中运行以下命令时,会产生预期的输出:
$ echo -e "line1\nline2"
line1
line2
当我在 CentOS 机器上的 sh 中运行相同的命令时,也会产生正确的输出。但是当我在 Ubuntu 12.04 或 11.04 的 sh 中运行命令时,会产生以下输出:
$ echo -e "line1\nline2"
-e line1
line2
有趣的是,如果我在 Ubuntu 上的 sh 中运行以下命令,它会自动解释转义字符。
$ echo "line1\nline2"
line1
line2
该脚本需要在 sh shell 中运行,并且应该可以跨不同的机器移植。任何解决方案。我也非常感谢一些文档的链接,这些文档解释了这些事情发生的原因或方式。