Mapfile adalah cara yang mudah untuk membaca baris dari file ke dalam array yang diindeks, tidak portabel seperti membaca tetapi sedikit lebih cepat. Dengan menggunakan untuk loop Anda menghindari membuat subkulit.
#!/bin/bash
mapfile -t < file.txt
for line in "${MAPFILE[@]}"; do
echo $line
done
Perlu diingat saat menggunakan pipa, itu akan menempatkan loop sementara dalam subkulit. Perubahan di dalam variabel while loop like tidak akan merambat ke bagian luar skrip.
Contoh:
#!/bin/bash
a=0
printf %s\\n {0..5} | while read; do
((a++))
done
echo $a # 'a' will always be 0.
(Solusi yang lebih baik):
#!/bin/bash
b=0
while read; do
((b++))
done < <(printf %s\\n {0..5})
echo $b # 'b' equal to 6 (works as expected).