我使用三种方式运行我的脚本,但输出不同,你能向我解释一下为什么它会这样工作吗?谢谢!! 这是我的脚本
#!/bin/bash
#Program:
# This program shows "Hello World!" in your screen.
echo -e "Hello World! \a\n"
exit 0
如果我通过 bash 和 ./ 运行它,就像 bash sh01.sh 输出是
世界你好!
但是,如果我使用 sh 像 sh sh01.sh 那样,那就是
-e 世界你好!
还有一些其他信息
echo
不太可移植(即使是 Bash 的 echo
在不同的操作系统上也可能有不同的行为,这些操作系统在编译 Bash 时可能使用不同的默认选项)。您可以使用printf
。根据posix:
不可能在所有 POSIX 系统中可移植地使用
,除非同时省略echo
(作为第一个参数)和转义序列。-n
实用程序可移植地用于模拟printf
实用程序的任何传统行为 [...]echo
我的 bashrc 中有这个
_echo()
:
#
# _echo [-n] args...
#
function _echo()
{
local eol='\n'
if [[ $1 == '-n' ]]; then
eol=''
shift
fi
if [[ $1 == '--' ]]; then
shift
fi
printf "%s$eol" "$*"
}