Berbagai cara untuk membaca file dalam skrip bash menggunakan saat loop
- 1413
- 436
- Luis Baumbach
Artikel ini semua tentang cara membaca file dalam skrip bash menggunakan a Saat loop. Membaca file adalah operasi umum dalam pemrograman. Anda harus terbiasa dengan metode yang berbeda dan metode mana yang lebih efisien untuk digunakan. Dalam Bash, satu tugas dapat dicapai dalam banyak hal tetapi selalu ada cara yang optimal untuk menyelesaikan tugas dan kita harus mengikutinya.
Sebelum melihat cara membaca konten file menggunakan Saat loop, primer cepat tentang cara kerja loop. Saat loop mengevaluasi suatu kondisi dan berulang kali atas satu set kode yang diberikan saat kondisi tersebut benar.
Sedangkan [kondisi] melakukan blok kode selesai
Ayo Hancurkan Saat loop sintaksis.
- Saat loop harus mulai dengan kata kunci sementara diikuti oleh suatu kondisi.
- A kondisi harus tertutup di dalam [] atau [[]]. Kondisi harus selalu kembali benar agar loop dieksekusi.
- Blok kode yang sebenarnya akan ditempatkan di antara Mengerjakan Dan Selesai.
Nomor = 0 sementara [[$ number -le 10]] do echo "Welcome $ number kali" ((angka ++)) selesaiSaat loop
Ini adalah contoh yang sangat sederhana, di mana lingkaran mengeksekusi sampai NOMOR tidak lebih besar dari 10 dan mencetak pernyataan gema.
Bersama ketika Kami akan menggunakan membaca Perintah untuk membaca konten baris file demi baris. Di bawah ini adalah sintaks bagaimana cara ketika Dan membaca Perintah digabungkan. Sekarang ada berbagai cara untuk meneruskan file sebagai input dan kita akan melihat semuanya.
# Sintaks saat membaca variabel do code selesai
Piping di Linux
Biasanya kami akan menggunakan perintah CAT untuk melihat konten file dari terminal. Juga, kami akan menyalurkan output dari Perintah kucing ke perintah lain seperti grep, sort, dll.
Demikian pula, kami akan menggunakan Perintah kucing di sini untuk membaca konten file dan menyalurkannya ke a ketika lingkaran. Untuk demonstrasi, saya menggunakan /etc/passwd file tetapi tidak disarankan untuk mengacaukan file ini jadi ambil salinan cadangan file ini dan mainkan jika Anda mau.
Cat /etc /passwd | Saat membaca Lread do Echo $ lread selesaiPiping di Linux
Mari kita hancurkan apa yang akan terjadi saat kode di atas dikirimkan.
- kucing /etc /passwd akan membaca isi file dan meneruskannya sebagai input melalui pipa.
- membaca Perintah membaca setiap baris yang dilewati sebagai input dari perintah CAT dan menyimpannya di Lread variabel.
- membaca Perintah akan membaca konten file sampai EOL ditafsirkan.
Anda juga dapat menggunakan perintah lain seperti kepala, ekor, dan pipa untuk saat loop.
head -n 5 /etc /passwd | Saat membaca Lread do Echo $ lread selesaiPerintah kepala
Input pengalihan di Linux
Kami dapat mengarahkan kembali konten file Saat loop Menggunakan operator pengalihan input (<)
.
Saat membaca Lread do Echo $ lread selesai < /etc/passwd | head -n 5Pengalihan input
Anda juga dapat menyimpan nama file ke variabel dan meneruskannya melalui operator pengalihan.
FileName = "/etc/passwd" saat membaca lread do echo $ lread selesai < $FILENAMESimpan nama file di variabel
Anda juga dapat meneruskan nama file sebagai argumen untuk skrip Anda.
Saat membaca Lread do Echo $ lread selesai < $1 | head -n 5Simpan nama file sebagai argumen
Pemisah bidang internal
Anda dapat bekerja dengan berbagai jenis format file (CSV, txt, Json) dan Anda mungkin ingin membagi konten file berdasarkan pembatas khusus. Dalam hal ini, Anda dapat menggunakan "Pemisah Lapangan Internal (IFS)”Untuk membagi konten file dan menyimpannya dalam variabel.
Izinkan saya mendemonstrasikan cara kerjanya. Lihatlah /etc/passwd file yang memiliki usus besar (:)
sebagai pembatas. Anda sekarang dapat membagi setiap kata dari baris dan menyimpannya dalam variabel terpisah.
Dalam contoh di bawah ini, saya berpisah /etc/passwd File dengan usus besar sebagai pemisah saya dan menyimpan setiap perpecahan menjadi variabel yang berbeda.
while ifs = ":" Baca a b c d e f g do echo $ a echo $ b echo $ c echo $ d echo $ e echo $ f echo $ g selesai < /etc/passwdPemisah bidang internal
Saya hanya menampilkan satu garis split pada tangkapan layar di atas mempertimbangkan ukuran tangkapan layar.
Garis kosong di Linux
Garis kosong tidak diabaikan saat Anda lingkaran melalui konten file. Untuk menunjukkan ini, saya telah membuat file sampel dengan konten di bawah ini. Ada 4 baris dan beberapa garis kosong, spasi putih terkemuka, ruang putih tertinggal, karakter tab di baris 2, dan beberapa karakter pelarian (\N Dan \T).
File dengan baris kosongSaat membaca Lread do Echo $ lread selesai < testfileGaris kosong tidak diabaikan
Lihat hasilnya, garis kosong tidak diabaikan. Juga, hal yang menarik untuk dicatat adalah bagaimana ruang putih dipangkas oleh membaca memerintah. Cara sederhana untuk mengabaikan baris kosong saat membaca konten file adalah dengan menggunakan operator uji dengan -z
Bendera yang memeriksa apakah panjang string nol. Sekarang mari kita ulangi contoh yang sama tetapi kali ini dengan operator uji.
Saat membaca lread do jika [[ ! -z $ lread]] kemudian gema $ lread fi selesai < testfileGaris kosong diabaikan
Sekarang dari output, Anda dapat melihat garis kosong diabaikan.
Escape Character
Escape Character Like \N
, \T
, \C
tidak akan dicetak saat membaca file. Untuk menunjukkan ini, saya menggunakan file sampel yang sama yang memiliki beberapa karakter pelarian.
Saat membaca Lread do Echo $ lread selesai < testfileEscape Character in Linux
Anda dapat melihat dari output, karakter pelarian telah kehilangan maknanya dan hanya N Dan T dicetak bukannya \N
Dan \T
. Anda dapat gunakan -R
untuk mencegah interpretasi backslash.
Sambil baca -r lread do echo $ lread selesai < testfileMencegah interpretasi backslash
Itu untuk artikel ini. Kami akan senang mendengar kabar dari Anda jika ada umpan balik atau tips. Umpan balik Anda adalah apa yang membantu kami membuat konten yang lebih baik. Terus membaca dan terus mendukung.
- « LFCA mempelajari perintah manajemen file dasar di Linux - Bagian 2
- Berbagai cara untuk menggunakan perintah kolom di linux »