3

为什么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。为什么不一样?我该如何纠正?

4

2 回答 2

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 行,您不必给它任何特殊选项。

于 2012-05-20T04:40:15.173 回答
2

它与#!/bin/sh我的脚本顶部有关。将其更改为 后#!/bin/bash,我看到了预期的输出。

于 2012-06-25T21:02:31.073 回答