Dalam pelajaran ini, kita akan melihat bagaimana kita dapat menggunakan pernyataan If-Then-Else dalam skrip persekitaran Bash yang kita tulis. Pernyataan If-Then-Else adalah alat yang berguna untuk menyediakan cara untuk menentukan jalan tindakan skrip apabila beberapa syarat dipenuhi. Mari kita lihat apa sintaks untuk pernyataan If-Then-Else:
sekiranyaBEBERAPA PERINTAH;kemudianKEMUDIAN-PERINTAH;
yang lainPERINTAH LAIN;
menjadi
Dalam perintah di atas yang ditunjukkan, jika BEBERAPA PERINTAH didapati benar atau status pengembaliannya didapati 0, PERINTAH KEMUDIAN akan dilaksanakan. Sekiranya ini tidak berlaku, ELSE-COMMANDS dijalankan. Dalam BEBERAPA PERINTAH, kita biasanya melakukan beberapa perbandingan String atau perbandingan nilai dalam bentuk bilangan bulat. Kami juga boleh melakukan banyak operasi yang melibatkan fail. Mari kita lihat beberapa contoh perintah utama yang digunakan terutamanya ketika bekerja dengan keadaan berdasarkan fail:
Utama | Makna |
---|---|
[-untuk] | Kembali benar apabila FILE wujud. |
[-b] | Kembali benar apabila FILE ada & merupakan fail khas blok. |
[-c] | Kembali benar apabila FILE ada & merupakan fail khas watak. |
[-d] | Kembali benar apabila FILE ada & adalah direktori. |
[-Dan] | Kembali benar apabila FILE wujud. |
[-f] | Kembali benar apabila FILE ada & merupakan fail biasa. |
[-g] | Kembali benar apabila FILE ada & bit SGIDnya ditetapkan. |
[-h] | Kembali benar apabila FILE wujud & merupakan pautan simbolik. |
[-k] | Kembali benar apabila FILE ada & bit melekitnya ditetapkan. |
[-p] | Kembali benar apabila FILE ada & adalah paip bernama (FIFO). |
[-r] | Kembali benar apabila FILE ada & boleh dibaca. |
[-s] | Mengembalikan true apabila FILE ada dan mempunyai ukuran lebih besar daripada sifar. |
[-t] | Kembali benar apabila deskriptor fail FD dibuka & merujuk kepada terminal. |
[-u] | Kembali benar apabila FILE ada & bit SUID (set ID pengguna) ditetapkan. |
[-dalam] | Kembali benar apabila FILE ada & boleh ditulis. |
[-x] | Kembali benar apabila FILE ada & boleh dilaksanakan. |
[-O] | Kembali benar apabila FILE ada & dimiliki oleh ID pengguna yang berkesan. |
[-G] | Kembali benar apabila FILE ada & dimiliki oleh ID kumpulan yang berkesan. |
[-ETI] | Kembali benar apabila FILE wujud & merupakan pautan simbolik. |
[-N] | Kembali benar apabila FILE ada & telah diubah suai sejak terakhir dibaca. |
[-S] | Kembali benar apabila FILE ada & adalah soket. |
KOMEN DAN KEMUDIAN LAIN boleh menjadi operasi UNIX yang sah atau program yang boleh dilaksanakan. Perhatikan bahawa kemudian dan menjadi perintah dipisahkan dengan titik koma kerana ia dianggap sebagai elemen skrip yang sepenuhnya terpisah.
Contoh Mudah Jika-Kemudian-Lain
Mari kita mulakan pelajaran kita dengan contoh yang sangat mudah dengan pernyataan If-Then-Else.
Berikut adalah contoh program:
Berikut adalah output yang kita lihat ketika kita menjalankan skrip kita:
$. ifelse1.shNilai sama!
$
Menggunakan argumen baris perintah
Kita juga dapat menggunakan argumen baris perintah dalam skrip kita dan menggunakan jumlah argumen dan nilai itu sendiri sebagai syarat dalam pernyataan IF yang kita tentukan. Kami pertama kali menentukan fail teks dengan kandungan berikut:
Nama saya LinuxHint. Saya suka pelayan, terutamanya yang ada di Ubuntu. Mereka begitu
tamat!
Sekarang, kita boleh menulis skrip yang mendapati sama ada perkataan berlaku dalam fail teks atau tidak. Mari tentukan skripnya sekarang:
membuang 'Mencari $ 1 dalam $ 2'cengkaman $ 1 $ 2
sekiranya [ $? -kelahiran 0 ]
kemudian
membuang '$ 1 tidak dijumpai dalam fail $ 2.'
yang lain
membuang '$ 1 dijumpai dalam fail $ 2.'
menjadi
membuang 'Skrip selesai.'
Skrip ini sangat dinamik. Ia menganggap perkataan untuk dicari dan fail untuk dicari dari baris perintah itu sendiri. Sekarang, kami bersedia menjalankan skrip kami:
. ifelse2.sh suka hello.txtKami akan melihat output seperti:
Mencari cintadalamhello.txtcinta dijumpaidalam failhello.txt.
Skrip selesai.
Memeriksa bilangan argumen baris perintah
Di dalam pernyataan IF, kita bahkan dapat memeriksa berapa banyak argumen baris perintah yang diserahkan kepada perintah itu sehingga kita dapat bertindak sama:
mengira=$ #sekiranya [ ! kiraan $ -gt 1 ]
kemudian
membuang 'Tidak cukup hujah'
yang lain
membuang 'Syabas!'
menjadi
Mari jalankan skrip ini sekarang, kita akan melihat output berikut:
Penyataan If-Then-Elif-Else
Kami juga boleh mempunyai banyak pernyataan IF dalam blok yang sama untuk menyempitkan jalan keputusan yang diambil oleh program kami untuk melaksanakan perintah yang kami tetapkan. Berikut adalah sintaks untuk menentukan beberapa pernyataan IF dalam skrip kami:
sekiranyaPERINTAH UJIAN;kemudian
HASIL-HASIL;
elif
PERINTAH LAIN;
kemudian
HASIL-HASIL LAIN-LAIN;
yang lain
PERINTAH ALTERNATE;
menjadi
Ini kelihatan agak biasa dan senang diikuti. Mari kita tentukan contoh mudah untuk menentukan bagaimana pokok berfungsi:
mengira=$ #sekiranya [ kiraan $ -eq 1 ]
kemudian
membuang 'Hanya ada satu hujah yang dijumpai.'
elif [ kiraan $ -eq 2 ]
kemudian
membuang 'Lebih baik, dua hujah dijumpai.'
yang lain
membuang 'Kerja bagus, banyak hujah dijumpai!'
menjadi
Inilah yang kita dapat kembali dengan arahan ini:
Menggunakan pernyataan kes
Penyataan IF-ELSE berguna apabila anda mempunyai banyak pilihan yang perlu anda putuskan. Tetapi sekiranya anda ingin melakukan tindakan hanya dalam beberapa kasus yang sesuai dengan hasilnya, kami juga dapat menggunakan pernyataan CASE dalam skrip Bash. Sintaksnya kelihatan seperti:
kesEKSPRESIdalamKES1)PERINTAH-KE-PERLAKSANAAN;KES2)PERINTAH-KE-PERLAKSANAAN;
KES2)PERINTAH-KE-PERLAKSANAAN;
...)PERINTAH-KE-PERLAKSANAAN;
*)PERINTAH-KE-PERLAKSANAAN;
esac
Kes terakhir dengan * bertindak sebagai kes lalai dan akan dijalankan apabila tidak ada kes yang dinyatakan di atas yang sesuai.
Mari kita buat contoh ringkas dengan menggunakan pernyataan CASE:
kes '$ 1' dalam1)
membuang 'Nilai adalah 1.'
;;
2)
membuang 'Nilai adalah 2.'
;;
3)
membuang 'Nilai adalah 3.'
;;
*)
membuang 'Nilai lain dilalui.'
esac
Setiap penyataan CASE ditamatkan oleh ;; (tanda separa kolon berganda). Inilah yang kita dapat kembali dengan arahan ini:
Kesimpulannya
Dalam pelajaran ini, kita melihat bagaimana kita dapat menggunakan pernyataan IF-ELSE, IF-THEN-ELIF dan CASE dalam skrip Bash yang kita tentukan untuk mengambil tindakan khusus berdasarkan nilai-nilai yang ada dalam program kita atau dilalui oleh pengguna menggunakan posisi parameter.