3

OSX ターミナルからキャリッジ リターンを -ing すると、スクリプトechoとは異なる動作をするのはなぜですか?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で同じことを実行したところ、同じ結果が得られました。

私は2つの可能性を考えています:

  • set -oまたはshoot設定の1つがこれを行っている可能性があります
  • あなた.bashrc(シェルスクリプトを実行するときに呼び出されます)は何かをしています。

私の結果は次のようになります。

$ echo -ne "hello\rbye"
bye$
$ test.sh   #Shell script with the one line in it
buy$ []

[]カーソルを表します。私は持ってい$PS1="$ "ます。

提案として、printfこのようなことをしたい場合に使用してください。

$ printf "hello\rbye"

printfCR行が自動的に追加されることはなく、特別なオプションを指定する必要もありません。

于 2012-05-20T04:40:15.173 に答える
2

それは#!/bin/sh私のスクリプトの上部にあるものと関係がありました。に変更した後#!/bin/bash、期待される出力が表示されました。

于 2012-06-25T21:02:31.073 に答える