Sesuai contoh berikut, dan seperti dalam pertanyaan saya baru-baru ini Di bash, ke mana char baris baru yang tertinggal? , saya ingin tahu "mengapa" itu terjadi
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
Saya berasumsi pasti ada beberapa sangat alasan signifikan untuk tindakan shell, yaitu Substitusi Perintah, untuk benar-benar menghapus beberapa data dari output perintah yang digantikannya…
tetapi saya tidak dapat memahami yang satu ini, karena tampaknya ini merupakan kebalikan dari apa itu adalah seharusnya untuk melakukan .. yaitu. untuk meneruskan output dari perintah kembali ke proses skrip… Menahan satu karakter tampak aneh bagi saya, tapi saya rasa ada alasan yang masuk akal untuk itu… Saya ingin mengetahui apa alasannya…
Jawaban yang Diterima:
Karena shell pada awalnya tidak dimaksudkan untuk menjadi bahasa pemrograman lengkap.
Cukup sulit untuk menghapus n
. yang tertinggal dari beberapa keluaran perintah.
Namun, untuk tujuan tampilan, hampir semua perintah mengakhiri keluarannya dengan n
, jadi… harus ada cara sederhana untuk menghapusnya saat Anda ingin menggunakannya di perintah lain. Penghapusan otomatis dengan $()
konstruksi adalah solusi yang dipilih.
Jadi, mungkin Anda akan menerima pertanyaan ini sebagai jawaban:
Dapatkah Anda menemukan cara sederhana untuk menghapus n
. yang tertinggal? jika ini tidak dilakukan secara otomatis pada perintah berikut?
> echo The current date is "$(date)", have a good day!
Perhatikan bahwa kutipan diperlukan untuk mencegah penghancuran spasi ganda yang mungkin muncul pada tanggal yang diformat.