次のコードは、状況を最もよく説明しています。最後の行が末尾の改行文字を出力しないのはなぜですか?各行の出力はコメントに表示されます。GNU bashバージョン4.1.5を使用しています
echo -n $'a\nb\n' | xxd -p # 610a620a
x=$'a\nb\n' ; echo -n "$x" | xxd -p # 610a620a
echo -ne "a\nb\n" | xxd -p # 610a620a
x="$(echo -ne "a\nb\n")" ; echo -n "$x" | xxd -p # 610a62
@Gilles:上記のあなたの例について:
—
...-Peter.O
tmp=$(somecommand; echo a)
...これは確かにポイントを家に駆り立てました...例を見たまで、私の傾向はまだ使用することになっていたでしょうecho -n a
...しかし、もちろん、必要はありません! 、-n
コマンド置換は導入された末尾の改行をいずれの場合でも削除するためです!...ありがとう
tmp=$(somecommand; echo a); tmp=${tmp%a}