Sintaks penyataan kes bash dan contoh

Sintaks penyataan kes bash dan contoh

Kenyataan kes adalah pernyataan bersyarat yang kuat di bash yang membolehkan anda menguji pemboleh ubah terhadap senarai nilai. Ia adalah alternatif yang lebih ringkas dan cekap untuk menggunakan beberapa pernyataan jika-kemudian. Berkali-kali ia adalah alternatif yang baik untuk pernyataan jika else. Anda juga boleh menggunakannya untuk memproses argumen baris arahan dalam skrip shell.

Dalam artikel ini, kami akan memperkenalkan anda kepada pernyataan kes di Bash dan memberikan contoh bagaimana ia boleh digunakan dalam skrip bash.

Sintaks pernyataan kes di bash

Sintaks pernyataan kes di Bash adalah seperti berikut:

ungkapan kes dalam corak1) perintah1 ;; corak2) perintah2 ;; corak3) perintah3 ;; *) default_commands ;; ESAC
12345678910ungkapan kes dalam corak1) perintah1 ;; corak2) perintah2 ;; corak3) perintah3 ;; *) default_commands ;; ESAC

Kata kunci kes menunjukkan permulaan pernyataan kes, dan kata kunci memisahkan ungkapan yang akan diuji dari senarai corak. Setiap corak dilampirkan dalam kurungan dan diikuti dengan senarai arahan yang akan dilaksanakan jika coraknya sesuai dengan ungkapan. THE DOUBLE CICOLON (;;) Menunjukkan akhir setiap senarai arahan. The *) corak sepadan dengan sebarang ungkapan yang tidak sepadan dengan mana -mana corak sebelumnya, dan default_commands dilaksanakan dalam kes itu.

Menggunakan pernyataan kes di Bash

Kenyataan kes di bash sangat berguna apabila anda ingin membandingkan pemboleh ubah terhadap senarai nilai yang mungkin. Berikut adalah contoh yang menunjukkan bagaimana anda boleh menggunakan pernyataan kes untuk memeriksa nilai pembolehubah persekitaran pengguna $:

kes $ pengguna dalam root) echo "Anda log masuk sebagai akar.";; ubuntu) echo" Anda log masuk sebagai ubuntu.";; *) echo" anda dilog masuk sebagai pengguna yang tidak diketahui.";; Esac
12345678kes $ pengguna dalam root) echo "Anda log masuk sebagai akar.";; ubuntu) echo" Anda log masuk sebagai ubuntu.";; *) echo" anda dilog masuk sebagai pengguna yang tidak diketahui.";; Esac

Dalam contoh ini, ungkapan yang diuji adalah nilai $ Pengguna pembolehubah persekitaran. Corak adalah nilai yang mungkin $ Pengguna (root dan ubuntu), dan corak lalai adalah *) corak, yang sepadan dengan sebarang nilai yang bukan akar atau ubuntu.

Penyataan kes dengan argumen baris arahan

Anda juga boleh menggunakan pernyataan kes untuk memproses argumen baris arahan dalam skrip bash. Berikut adalah contoh yang menunjukkan cara menggunakan pernyataan kes untuk mengendalikan pilihan baris arahan yang berbeza:

manakala getopts "a: b: c:" ikut; lakukan kes $ opt dalam a) echo "opsyen A telah diluluskan dengan argumen $ optarg" ;; b) echo "Opsyen B telah diluluskan dengan argumen $ optarg" ;; c) echo "Opsyen C telah diluluskan dengan argumen $ optarg" ;; *) echo "Opsyen tidak sah: -$ optarg" ;; ESAC selesai
123456789101112manakala getopts "a: b: c:" ikut; lakukan kes $ opt dalam a) echo "opsyen A telah diluluskan dengan argumen $ optarg" ;; b) echo "Opsyen B telah diluluskan dengan argumen $ optarg" ;; c) echo "Opsyen C telah diluluskan dengan argumen $ optarg" ;; *) echo "Opsyen tidak sah: -$ optarg" ;; esacdone

Dalam contoh ini, getopts Perintah digunakan untuk memproses pilihan baris arahan. Penyataan kes digunakan untuk mengendalikan setiap pilihan (a, b, dan c) dan hujah yang sepadan. Corak lalai (*) digunakan untuk mengendalikan sebarang pilihan yang tidak sah.

Penyataan kes dengan ungkapan biasa

Ekspresi biasa yang digunakan dalam pernyataan kes disertakan dalam kurungan persegi ([]). Ini kerana kita menggunakan kelas watak untuk memadankan pelbagai jenis watak. The + Tandatangan selepas corak kedua digunakan untuk memadankan satu atau lebih kejadian corak sebelumnya (dalam kes ini, huruf kecil). Ekspresi biasa boleh menjadi agak rumit, dan terdapat banyak lagi ciri dan pilihan yang boleh anda gunakan dalam bash untuk memadankan corak.

Berikut adalah contoh bagaimana anda boleh menggunakan ungkapan biasa dengan pernyataan kes di Bash:

#!/bin/bash baca -p "Masukkan rentetan:" str kes $ str dalam [a-z] [0-9]) echo "Rentetan bermula dengan huruf kecil dan berakhir dengan nombor.";; [a-z] [a-z]+) echo" Rentetan bermula dengan huruf besar dan diikuti dengan huruf kecil.";; [0-9]+) echo" Rentetan hanya mengandungi nombor.";; *) echo" Rentetan tidak sepadan dengan mana -mana corak.";; Esac
123456789101112131415161718#!/bin/bash baca -p "Masukkan rentetan:" str kes $ str dalam [a-z] [0-9]) echo "Rentetan bermula dengan huruf kecil dan berakhir dengan nombor.";; [a-z] [a-z]+) echo" Rentetan bermula dengan huruf besar dan diikuti dengan huruf kecil.";; [0-9]+) echo" Rentetan hanya mengandungi nombor.";; *) echo" Rentetan tidak sepadan dengan mana -mana corak.";; Esac

Dalam contoh ini, kami menggunakan ungkapan biasa untuk memadankan corak rentetan yang berbeza. Corak pertama sepadan dengan rentetan yang bermula dengan huruf kecil dan berakhir dengan nombor, seperti A1, B2, dan sebagainya. Corak kedua sepadan dengan rentetan yang bermula dengan huruf besar dan diikuti oleh satu atau lebih huruf kecil, seperti Hello, World, dan sebagainya. Corak ketiga sepadan dengan rentetan yang hanya mengandungi nombor, seperti 123, 4567, dan sebagainya. Corak lalai sepadan dengan rentetan yang tidak sepadan dengan mana -mana corak sebelumnya.

Apabila skrip dijalankan, ia mendorong pengguna memasukkan rentetan. Rentetan kemudian diuji terhadap corak yang berbeza menggunakan pernyataan kes. Sekiranya corak sepadan, mesej yang sepadan dipaparkan. Sekiranya tidak ada corak yang sepadan, mesej lalai dipaparkan.

Kesimpulan

Kenyataan kes di Bash adalah alternatif yang kuat dan cekap untuk menggunakan beberapa pernyataan jika-kemudian. Ia membolehkan anda menguji pemboleh ubah terhadap senarai nilai yang mungkin dan melaksanakan perintah yang berbeza berdasarkan corak yang sepadan. Penyataan kes amat berguna apabila anda ingin memproses argumen baris arahan atau membandingkan pemboleh ubah terhadap senarai nilai yang mungkin. Dengan menggunakan pernyataan kes, anda boleh menulis lebih ringkas dan boleh dibaca