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

最佳答案

我只是在我的 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 行,并且您不必为其提供任何特殊选项。

    关于macos - 在 OSX bash 中打印回车,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10670610/

    10-13 05:17