2012-03-01 08:25:33 +0000 2012-03-01 08:25:33 +0000
84
84
Advertisement

キャリッジリターンなしで$something >> file.txtをエコーするには?

Advertisement

echo $something >> file.txtをすると改行が追加されてしまいます。

改行せずに追記したい場合は?

Advertisement
Advertisement

回答 (4)

98
98
98
2012-03-01 08:28:15 +0000

echo -n はそのためのものです。

42
42
42
2012-03-01 14:42:29 +0000

printf は非常に柔軟で、echoよりも移植性が高いです。C/Perl/etc の実装と同様に、フォーマット文字列を \n で終了させなければ、改行は表示されません:

printf "%s" "$something" >> file.txt
7
Advertisement
7
7
2016-12-14 07:52:48 +0000
Advertisement

コマンドの出力を使用している場合は、echo

/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
```と組み合わせてxargsを使用することができます。
0
0
0
2017-05-11 11:41:20 +0000

tr は別の選択肢です。

echoを入力として使用している場合は、どのtr -d '\n'から逃れることができます。

このテクニックは、他のコマンドからの出力をパイプで取り込む場合にも有効です(出力が一行だけの場合)。さらに、ファイルの行末がUNIXかDOSかわからない場合は、tr -d '\n\r'.

**これが動作することを示すテストをいくつか紹介します。

something='0123456789' ; echo ${something} | wc -c
11

UNIX改行:

something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10

DOSスタイル。

something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10

BSD trとGNU trでテスト済み。

Advertisement

関連する質問

11
6
18
9
3
Advertisement