为什么 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 -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 行,并且您不必为其提供任何特殊选项。关于macos - 在 OSX bash 中打印回车,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10670610/