Aşağıda satır satır bağımsız değişken olarak iletilen bir dosya okundu:
while IFS= read -r line; do
echo "Text read from file: $line"
done < my_filename.txt
Bu, döngüdeki bir dosyadan satır okumak için standart formdur . Açıklama:
IFS=
(veya IFS=''
) ön / arka boşlukların kırpılmasını önler.
-r
ters eğik çizgi kaçışlarının yorumlanmasını engeller.
Veya bir bash dosyası yardımcı komut dosyasına, örnek içeriğe koyabilirsiniz:
#!/bin/bash
while IFS= read -r line; do
echo "Text read from file: $line"
done < "$1"
Yukarıdakiler dosya adına sahip bir komut dosyasına kaydedilirse readfile
, aşağıdaki gibi çalıştırılabilir:
chmod +x readfile
./readfile filename.txt
Dosya standart bir POSIX metin dosyası değilse (= yeni satır karakteriyle sonlandırılmamışsa), döngü, izleyen kısmi satırları işleyecek şekilde değiştirilebilir:
while IFS= read -r line || [[ -n "$line" ]]; do
echo "Text read from file: $line"
done < "$1"
Burada, a ile || [[ -n $line ]]
bitmezse son satırın yok sayılmasını önler \n
(çünkü read
EOF ile karşılaştığında sıfırdan farklı bir çıkış kodu döndürür).
Döngü içindeki komutlar standart girdiden de okunuyorsa, tarafından kullanılan dosya tanımlayıcı read
başka bir şeyle değiştirilebilir ( standart dosya tanımlayıcılardan kaçının ), örn:
while IFS= read -r -u3 line; do
echo "Text read from file: $line"
done 3< "$1"
(Bash olmayan mermiler bilmiyor olabilir read -u3
; read <&3
bunun yerine kullanın.)