为什么echo
来自OSX终端的回车行为与bash
脚本的行为不同?
从OSX 10.7.3中的终端:
$ echo $SHELL
/bin/bash
$ /bin/bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin11)
Copyright (C) 2007 Free Software Foundation, Inc.
$ echo -ne "hello\rbye"
byelo
但我看到test.sh
的结果不同:
#!/bin/bash
echo -ne "hello\rbye"
...正在运行test.sh
给了我:
$ ./test.sh
byehello
我期待byelo
。它为什么不同?我该如何纠正这个?
答案 0 :(得分:2)
我刚在Mac上运行同样的东西,并得到了相同的结果。
我在考虑两种可能性:
set -o
或shoot
设置之一可能正在执行此操作.bashrc
(在运行shell脚本时会调用)正在执行某些操作。我的结果如下:
$ echo -ne "hello\rbye"
bye$
$ test.sh #Shell script with the one line in it
buy$ []
[]
表示光标。我有$PS1="$ "
。
建议,如果你想做这样的话,请使用printf
。
$ printf "hello\rbye"
printf
不会自动添加CR行,您也不必为其提供任何特殊选项。
答案 1 :(得分:2)
它与我脚本顶部的#!/bin/sh
有关。在我将其更改为#!/bin/bash
之后,我看到了预期的输出。