use*_*172 3 bash scripting ubuntu echo
在 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"
Run Code Online (Sandbox Code Playgroud)
以非 root 用户身份运行时,我看到以下输出:
$ ./echo-test
Testing /bin/echo -e
foo
bar
Testing bash echo -e
foo
bar
Run Code Online (Sandbox Code Playgroud)
以 root 身份运行时,我看到以下输出:
$ sudo ./echo-test
Running as root
Testing /bin/echo -e
foo
bar
Testing bash echo -e
-e foo
bar
Run Code Online (Sandbox Code Playgroud)
注意“-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)
归档时间: |
|
查看次数: |
2874 次 |
最近记录: |