Katakanlah saya memiliki file ini:
hello
world
hello world
Program ini
#!/bin/bash
for i in $(cat $1); do
echo "tester: $i"
done
keluaran
tester: hello
tester: world
tester: hello
tester: world
Saya ingin memiliki for
ulangi setiap baris secara individual dengan mengabaikan spasi putih, yaitu dua baris terakhir harus diganti dengan
tester: hello world
Menggunakan tanda kutip for i in "$(cat $1)";
menghasilkan i
ditugaskan seluruh file sekaligus. Apa yang harus saya ubah?
Jawaban yang Diterima:
(9 tahun kemudian:)
Kedua jawaban yang diberikan akan gagal pada file tanpa baris baru di akhir, ini akan secara efektif melewati baris terakhir, tidak menghasilkan kesalahan, akan menyebabkan bencana (belajar dengan cara yang sulit:).
Solusi ringkas terbaik yang saya temukan sejauh ini bahwa "Hanya Bekerja" (dalam bash dan sh):
while IFS='' read -r LINE || [ -n "${LINE}" ]; do
echo "processing line: ${LINE}"
done < /path/to/input/file.txt
Untuk diskusi lebih mendalam, lihat diskusi StackOverflow ini:Bagaimana cara menggunakan "sambil membaca" (Bash) untuk membaca baris terakhir dalam file jika tidak ada baris baru di akhir file?
Hati-hati:pendekatan ini menambahkan baris baru tambahan ke baris terakhir jika belum ada.