0

私は2つの変数を持っています:

export portNumber=8888^M
export loginIP_BASE=10.1.172.2^M

コロン「:」で区切られた1行に両方を印刷しようとしています。「10.1.172.2:8888」のようになります。

echo -n 'Login IP:'
echo -n $loginIP_BASE
echo -n ':'
echo $portNumber

代わりにこれを出力します:

:8888 IP:10.1.172.2

なぜそれをしているのですか?どうすればやりたいことができるようになりますか?

また、変数は別のファイルから既に存在しているため、自分で書きませんでした。「^M」は何をしますか?

4

3 に答える 3

2

Windows では、典型的な改行は \r\n です (*nix システムでは単に \n です)。

\rはキャリッジ リターンです。

\nは改行です。

^M\rであるため、 $loginIP_BASE を書き込んだ後、実際の行の位置 0 になります。

これらの ^M をすべて削除したい場合は、vim o で sed を使用して実行できます。

sed s/{ctrl+v}{ctrl+m}// file > new_file

({Ctrl+v} は ctrl を押してから v を押すことを意味します)

于 2009-06-24T21:53:40.083 に答える
1

このファイルは Windows からバイナリ モードで転送されたもので、行末にキャリッジ リターン文字が残っています。

それらはあなたの^Mシンボルであり、値が表示されたときにテキスト位置を行の先頭に戻す原因となっています.最初の値の一部。

適切な修正は、テキスト モード転送を使用して Windows からファイルを転送するか、転送後にファイルに対して dos2unix を実行することです。(または、ファイルが Windows から再度転送されない場合は、^M文字を削除してください!)

于 2009-06-24T21:47:57.897 に答える