84
84
キャリッジリターンなしで$something >> file.txtをエコーするには?
Advertisement
echo $something >> file.txtをすると改行が追加されてしまいます。
改行せずに追記したい場合は?
Advertisement
echo $something >> file.txtをすると改行が追加されてしまいます。
改行せずに追記したい場合は?
echo -n はそのためのものです。
printf は非常に柔軟で、echoよりも移植性が高いです。C/Perl/etc の実装と同様に、フォーマット文字列を \n で終了させなければ、改行は表示されません:
printf "%s" "$something" >> file.txt
コマンドの出力を使用している場合は、echo
/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
```と組み合わせてxargsを使用することができます。
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でテスト済み。