次の例のように、そして私の最近の質問のように bashで、末尾の改行文字はどこに行きましたか? 、「なぜ」起こるのか知りたい
x="$(echo -ne "anbn")" ; echo -n "$x" | xxd -p
# Output is: 610a62
# The trailing newline from the 'echo' command
# has been "deleted" by Command Substitution
非常にあるに違いないと思います シェルアクション、つまりコマンド置換が、置換しているコマンド出力から実際に一部のデータを削除する重要な理由…
しかし、これはそれとは正反対のようであるため、これについて頭を悩ませることはできません。 想定 すること..すなわち。コマンドの出力をスクリプトプロセスに戻す…1文字を抑えるのは奇妙に思えますが、それには理にかなった理由があると思います…その理由を知りたいと思っています…
承認された回答:
シェルはもともと完全なプログラミング言語を意図したものではなかったからです。
末尾のn
を削除するのは非常に困難です 一部のコマンド出力から。
ただし、表示の目的で、ほとんどすべてのコマンドはn
で出力を終了します。 、だから…別のコマンドで使用したい場合は、簡単に削除する方法が必要です。 $()
による自動削除 建設が選ばれた解決策でした。
したがって、この質問を答えとして受け入れるかもしれません:
末尾のn
を削除する簡単な方法を見つけてください 次のコマンドでこれが自動的に行われなかった場合はどうなりますか?
> echo The current date is "$(date)", have a good day!
フォーマットされた日付に表示される可能性のある二重スペースが壊れるのを防ぐために、引用符が必要であることに注意してください。