このようにhexdump
で文字列をダンプします_2031 3334 2e30 0a32 2032 3331 302e 000a
_。 _0x0a
_が改行文字であることは明らかですが、この文字列をエコーしようとすると、常に_1 430.2 2 13.0
_が返されます。_-e
_フラグ。
何が問題なのでしょうか?テーリング_\0
_は出力を台無しにしますか? _0x0a
_を新しい行に出力する代替手段はありますか?
よろしくお願いします。
echo
コマンドの改行文字は「\ n」です。次の例を見てください。
echo -e "This is line 1\nThis is line 2"
結果として出力されます
This is line 1
This is line 2
「-e」パラメータisここでは重要です。
POSIX 7はできないと言っています
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
-e
は定義されておらず、バックスラッシュは実装で定義されています。
最初のオペランドが-nの場合、またはいずれかのオペランドに<backslash>文字が含まれている場合、結果は実装定義です。
オプションのXSI拡張がない限り。
代わりに printf
を使用してください:
formatオペランドは、XBDファイル形式表記[...]で説明されている形式文字列として使用されます。
ファイル形式表記 :
\ n <改行>印刷位置を次の行の先頭に移動します。
また、Ubuntu 15.10とほとんどのディストリビューションは、次のようにecho
を実装しています。
help echo
which echo
混乱を招く恐れがあります。
最後に、この文字列をprintf "$string"
で適切にフォーマットします。皆さん、ありがとうございました。