Contoh Bash If-Then-Else

Bash If Then Else Example



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:



Sekiranya Contoh

Sekiranya Contoh





Berikut adalah output yang kita lihat ketika kita menjalankan skrip kita:

$. ifelse1.sh
Nilai 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.txt

Kami akan melihat output seperti:

Mencari cintadalamhello.txt
cinta 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:

Argumen baris perintah

Argumen baris perintah

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:

Sekiranya Contoh Elif Else

Sekiranya Contoh Elif Else

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' dalam
1)
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:

Contoh KES

Contoh KES

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.