【发布时间】:2011-02-25 06:55:30
【问题描述】:
在 ubuntu 9.10 上运行 bash 脚本时,我会从 bash echo 的“-e”选项中获得不同的行为,具体取决于我是否以 root 身份运行。
考虑这个脚本:
$ cat echo-test
if [ "`whoami`" = "root" ]; then
echo "Running as root"
fi
echo Testing /bin/echo -e
/bin/echo -e "foo\nbar"
echo Testing bash echo -e
echo -e "foo\nbar"
当以非 root 用户身份运行时,我会看到以下输出:
$ ./echo-test
Testing /bin/echo -e
foo
bar
Testing bash echo -e
foo
bar
当以 root 身份运行时,我会看到以下输出:
$ sudo ./echo-test
Running as root
Testing /bin/echo -e
foo
bar
Testing bash echo -e
-e foo
bar
请注意,在最后一种情况下会回显“-e”(倒数第二行是“-e foo”而不是“foo”)。当以 root 身份运行脚本时,echo 命令会像给定“-e”一样运行,如果给定 -e,则回显选项本身。
我可以理解 /bin/echo 和 bash echo 之间在行为上的一些细微差别,但我希望 bash echo 无论哪个用户调用它都表现相同。
有人知道为什么会这样吗?这是 bash echo 中的错误吗?
仅供参考——我正在运行 GNU bash,版本 4.0.33(1)-release (x86_64-pc-linux-gnu)
【问题讨论】:
标签: bash ubuntu scripting echo