Jika saya memiliki file yang input.txt
berisi:
hello
world
!
Kemudian mengeksekusi perintah bash echo $(cat input.txt)
akan menampilkan ini:
hello world !
Mengapa dan bagaimana saya bisa memperbaikinya untuk menampilkan dengan tepat apa yang ada di dalam file bagaimana di dalam file?
command-line
bash
f.ardelian
sumber
sumber
echo "$(date) something"
menghilangkan garis baru yang tertinggal dari keluaran tanggal, membuat gema itu mengeluarkan tanggal dan "sesuatu" pada baris yang sama. Jika Anda perlu menyimpan file atau output perintah "apa adanya", gunakan mapfile (help mapfile
),read -rd ''
atau read-loop while.Dikutip dari halaman manual bash, bagian
Command Substitution
:Sedikit lebih jauh, bagian yang sama:
Itu sebabnya
echo "$(cat /etc/passwd)"
berhasil.Selain itu, orang harus sadar, bahwa penggantian perintah dengan spesifikasi POSIX menghilangkan baris baru:
Dengan demikian, mengeluarkan file melalui
$(cat file.txt)
dapat menyebabkan hilangnya baris baru, dan itu bisa menjadi masalah jika integritas file keseluruhan adalah prioritas.sumber
Anda dapat mempertahankan baris baru, misalnya dengan mengatur IFS untuk dikosongkan:
sumber