在OSX bash中打印回车

时间:2012-05-20 03:37:48

标签: macos bash

为什么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。它为什么不同?我该如何纠正这个?

2 个答案:

答案 0 :(得分:2)

我刚在Mac上运行同样的东西,并得到了相同的结果。

我在考虑两种可能性:

  • 您的set -oshoot设置之一可能正在执行此操作
  • 您的.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之后,我看到了预期的输出。