Mapfile , satırları bir dosyadan dizine dizilmiş bir diziye okumak için , okunabileceği kadar taşınabilir ancak biraz daha hızlı okumak için uygun bir yoldur . Döngü için kullanarak alt kabuk oluşturmaktan kaçınırsınız.
#!/bin/bash
mapfile -t < file.txt
for line in "${MAPFILE[@]}"; do
echo $line
done
Boru hatlarını kullanırken aklınızda bulundurun, süre döngüsünü bir alt kabuğa koyacaktır. While döngüsü benzeri değişkenler içindeki değişiklikler komut dosyasının dış kısmına yayılmaz.
Örnek:
#!/bin/bash
a=0
printf %s\\n {0..5} | while read; do
((a++))
done
echo $a # 'a' will always be 0.
(Daha iyi çözüm):
#!/bin/bash
b=0
while read; do
((b++))
done < <(printf %s\\n {0..5})
echo $b # 'b' equal to 6 (works as expected).