Artikel ini akan mengenalkan konsep memainkan file dari baris per baris di Linux dengan bantuan dari contoh-contoh dan pengalaman pengguna lain. Kami akan menjelaskan pada Anda beberapa kesalahan saat membaca file di sistem operasi Linux, dan menunjukkan beberapa contoh perbedaan output for loop dan while loop. Kami juga akan memberikan beberapa tips dan contoh untuk menginisasi loop, dan cara menggunakan output while loop.
Salah satu kesalahan umum saat menggunakan skrip bash di GNU/Linux adalah membaca file dari baris per baris menggunakan for loop (untuk baris di dalam $ (cat file.txt) do. ..). Pada contoh berikut ini, fungsi for loop</ital> mengawali penilaian untuk tiap baris, bukan menilai tiap kata dalam file.
Anda juga dapat mengubah nilai dari variabel $ IFS (Internal Field Separator) dengan fungsi <bold>for loop sebelum memulai proses loop.
Berikut ini adalah contoh output for loop:
untuk baris dalam $ (cat file.txt) do echo "$ line" done
Ini
adalah
kolom
No
1
Ini
adalah
kolom
No
2
Ini
[...]
Solusinya adalah menggunakan sepasang fungsi while loop dengan pembacaan internal.
Cara ini juga dapat digunakan untuk memperoleh hasil dengan fungsi for loop, kemudian Anda dapat mengganti nilai variabel $ IFS (Internal Field Separator) sebelum memulai proses loop.
Fungsi while loop adalah cara yang termudah untuk membaca file dari baris per baris.
Syntax
while read line
do
command
done <file
Bagian awal file:
Ini adalah baris 1
Instruksi di command line:
while read line; do echo -e "$line\n"; done < file.txt
atau di skrip "bash" script:
#! / bin / bash
while read line
do
echo-e "$ line \ n"
done <file.txt
Output yang muncul di layar (stdout):
Ini adalah baris 1
Ini adalah baris 2
Ini adalah baris 3
Ini adalah baris 4
Ini adalah baris 5
Dari struktur file (seperti buku alamat atau /etc/passwd), sangat mungkin utnuk memperoleh nilai tiap kolom dan mengaturnya berdasarkan beberapa variabel dengan perintah 'read'. Mohon berhati-hati untuk menentukan variabel IFS dengan tanda pemisah yang benar (biasanya menggunakan spasi).
Contoh:
#! /bin/bash
while IFS=: read user pass uid gid full home shell
do
echo -e "$full :\n\
Pseudo : $user\n\
UID :\t $uid\n\
GID :\t $gid\n\
Home :\t $home\n\
Shell :\t $shell\n\n"
done < /etc/passwd
while read i; do echo -e "Parameter : $i"; done < <(echo -e "a\nab\nc")
Meski fungsi while loop tetap menjadi cara termudah untuk membaca file dari baris per baris, maka cara ini tetap memiliki dampak tersendiri. Fungsi while loop akan menghapus format baris, termasuk spasi dan tab. Di samping itu, fungsi for loop berpasangan dengan perubahan IFS yang dapat membantu menjaga struktur output dokumen.
Syntax
old_IFS=$IFS # save the field separator
IFS=$'\n' # new field separator, the end of line
for line in $(cat fichier)
do
command
done
IFS=$old_IFS # restore default field separator