Dalam artikel sebelumnya, kita telah melihat cara bekerja dengan pernyataan kondisional di bash untuk mengevaluasi kondisi dan mengambil keputusan berdasarkan hasil. Demikian pula, dalam artikel ini, kita akan mempelajari cara menggunakan pernyataan kasus dalam skrip Bash, yang juga digunakan untuk mengevaluasi kondisi. Anda dapat menggunakan pernyataan kasus Bash alih-alih menulis daftar panjang pernyataan if..elif..else. Jika Anda tidak tahu tentang pernyataan bersyarat, kami memiliki artikel terperinci tentang topik tersebut. Saya sarankan Anda melihatnya sebelum membaca artikel ini. Skrip
Bash – Pernyataan BersyaratContents
Sintaks pernyataan kasusContoh 1 - Kalkulator menggunakan pernyataan kasusContoh 2 - Membuat beberapa pola dalam satu klausaContoh 3 - Pencocokan pola dalam pernyataan kasusContoh 4 - Dapatkan konfirmasi penggunaContoh 5 - Pernyataan kasus dengan kode kembaliSkrip referensiKesimpulan Sintaks pernyataan kasus
Sintaks pernyataan kasus di bash diberikan di bawah ini:
xxekspresi huruf awal dalam pola1) STATEMENTS ;; pola2) PERNYATAAN ;; Pola3 | Pola4 | pola5) PERNYATAAN ;; pola-N) PERNYATAAN ;; ) PERNYATAAN ;; esac
Penjelasan:
Kata kunci "case" dan "esac" menandai awal dan akhir dari pernyataan case.Kata kunci case harus diikuti oleh "ekspresi". Ekspresi ini akan dievaluasi dan outputnya akan dicari berdasarkan daftar pola. Setelah ekspresi, kata kunci "in" harus ditulis, yang menunjuk ke "nilai dalam pola". Anda dapat membuat pola sebanyak yang Anda inginkan. Anda dapat menganggap setiap pola sebagai klausa if dan elif dalam pernyataan kondisional. Jika nilai yang dievaluasi dari ekspresi dicocokkan dengan suatu pola, pola itu akan menjalankan blok kodenya. Pola yang tersisa akan dilewati. Setiap pernyataan di dalam pola harus diakhiri dengan titik koma ganda (;;). Mirip dengan klausa else dalam pernyataan if, dalam pernyataan kasus ada pola default yang disebut tanda bintang () yang akan dijalankan blok kodenya jika tidak ada pola yang cocok. Contoh 1 - Kalkulator menggunakan pernyataan kasus
Dalam contoh ini, saya telah membuat kalkulator sederhana menggunakan pernyataan kasus. Mari saya jelaskan apa yang terjadi ketika Anda menjalankan kode ini.
Pengguna diminta untuk memasukkan dua angka dan disimpan dalam variabel "X" dan "Y". Pengguna diminta untuk memasukkan jenis operasi (tambah, kurangi, kalikan, bagi) dan disimpan dalam variabel "OPERATOR". Dalam pernyataan kasus, variabel "OPERATOR" dievaluasi dan pola yang berbeda (+,-,x,/,%) dibuat untuk operasi yang berbeda. Jika suatu pola cocok, pola tertentu akan jalankan pernyataannya dengan melewatkan semua pola lain dalam pernyataan kasus. Jika Anda mencoba memasukkan nilai lain selain operator aritmatika yang diinginkan, maka pola default (*) akan menjalankan pernyataannya.
#!/usr/bin/env bash read - p "Masukkan bilangan pertama(X) : " X read -p "Masukkan bilangan kedua(Y) : " Y baca -p " Penambahan => + Kurangi => - Kalikan => x Pembagian => / Reminder => % Pilih salah satu operator : " OPERATOR case "$OPERATOR" di +) echo -e "nPenambahan X dan Y adalah $(( X + Y ))" ;; -) echo -e "nPengurangan X dan Y adalah $(( X - Y ))" ;; x) echo -e "nKalikan X dan Y adalah $(( X * Y ))" ;; /) echo -e "nPembagian X dan Y adalah $(( X / Y ))" ;; %) echo -e "nPengingat dari X dan Y adalah $(( X % Y ))" ;; *) echo -e "n[ERROR] Anda telah memilih operator yang tidak ada dalam daftar. Anda dapat memilih salah satu operator(+, -, x, /, %) dari daftar. Jalankan kembali program." esac
Perhatikan gambar di bawah ini, saya mengirimkan kode dan memilih "Operator Penambahan".
Saya menjalankan kode yang sama lagi tetapi kali ini memberikan nilai acak yang akan membuat pola default (*) menjalankan pernyataannya.
Example 2 - Membuat beberapa pola dalam satu klausa
Pada contoh sebelumnya, kami telah membuat pola yang berbeda untuk operator aritmatika yang berbeda. Dimungkinkan juga untuk membuat beberapa pola dalam klausa yang sama dan jika ada pola yang cocok, pernyataan tertentu akan dijalankan. Sintaksnya akan sama tetapi Anda akan menambahkan simbol pipa (|) dan menambahkan pola yang berbeda pada baris yang sama seperti di bawah ini.
xxekspresi huruf awal di Pattern1 | Pola2 | pola3) PERNYATAAN ;; *) PERNYATAAN ;; esac
Pada contoh di bawah ini, pengguna akan memasukkan tahun sebagai input dan akan mendapatkan detail tutup oranye dari data IPL. Pada tahun 2015, 2017, dan 2019 pemain yang sama memenangkan topi oranye jadi saya telah membuat tahun yang berbeda sebagai pola dalam klausa yang sama.
read -p "Pilih tahun antara 2015 - 2021 untuk mendapatkan nama pemain topi oranye: " CAP kasus "$CAP" pada tahun 2015 | 2017 | 2019) echo -e "nPemenang topi oranye untuk $YEAR adalah David Warner" ;; 2016) echo -e "nPemenang topi oranye untuk $YEAR adalah Virat Kohli" ;; 2018) echo -e "nPemenang topi oranye untuk $YEAR adalah Kane Williamson" ;; 2020) echo -e "nPemenang topi oranye untuk $YEAR adalah KL Rahul" ;; 2021) echo -e "nPemenang topi oranye untuk $YEAR adalah Ruturaj Gaikwad" ;; *) echo -e "n[ERROR] Masukkan tahun antara 2015 - 2021." esacExample 3 - Pencocokan pola dalam pernyataan kasus
Pencocokan pola dapat digunakan dalam pernyataan kasus. Saya menggunakan contoh yang sama dari bagian sebelumnya tetapi menambahkan pola tambahan (20[2-9][2-9]) di mana jika pengguna memasukkan tahun apa pun di atas 2021, ia akan mencetak pesan yang mengatakan "seri belum terjadi".
read -p "Pilih tahun antara 2015 - 2021 untuk mendapatkan nama pemain topi oranye: " CAP case "$CAP" tahun 2015 | 2017 | 2019) echo -e "nPemenang topi oranye untuk $YEAR adalah David Warner" ;; 2016) echo -e "nPemenang topi oranye untuk $YEAR adalah Virat Kohli" ;; 2018) echo -e "nPemenang topi oranye untuk $YEAR adalah Kane Williamson" ;; 2020) echo -e "nPemenang topi oranye untuk $YEAR adalah KL Rahul" ;; 2021) echo -e "nPemenang topi oranye untuk $YEAR adalah Ruturaj Gaikwad" ;; 20[2-9][2-9]) echo -e "nSeri belum terjadi untuk tahun $CAP" ;; *) echo -e "n[ERROR] Masukkan tahun antara 2015 - 2021." esacExample 4 - Dapatkan konfirmasi pengguna
Terkadang Anda mungkin meminta pengguna untuk memberikan konfirmasi untuk melanjutkan ke langkah berikutnya dalam program Anda. Menggunakan pernyataan kasus akan menjadi pilihan yang baik untuk kasus penggunaan ini.
Pada contoh sebelumnya, pola ditulis dalam satu baris dan pernyataan di baris lain tetapi Anda juga dapat menulis pola dan pernyataan dalam satu baris seperti yang ditunjukkan di bawah ini.
read -p "File input diterima dalam format CSV, Harap konfirmasi untuk memuat data ke database produksi : " CONFIRM case "$CONFIRM" di [Yy] | [Yy][Ee][Ss] ) echo "++ Menjalankan utilitas untuk memuat data ke database.." ;; [Nn] | [Nn][Oo] ) echo -e "++ Melewatkan langkah db saat konfirmasi pengguna..n Keluar dari skrip.." ;; *) echo -e "[ERROR] = Input Salah, Keluar dari skrip.." esacContoh 5 - Pernyataan kasus dengan kode kembali
Anda dapat menulis logika untuk menangkap kode kembali dari perintah yang dijalankan sebelumnya dan mengambil beberapa tindakan menggunakan pernyataan kasus. Saya membuat kotak dialog GUI untuk menerima nama pengguna dan kata sandi dari pengguna menggunakan zenity. Jika pengguna berhasil mengirimkan nama pengguna dan kata sandi, zenity akan membuang kode pengembalian sebagai nol dan berdasarkan itu saya telah menambahkan logika untuk menambahkan pengguna baru. Apa pun selain nol, pesan kesalahan akan ditampilkan.
INFO=$(zenity --password --username) case $? di 0) USERNAME=$(echo ${INFO} | awk -F "|" '{ print $1 }') PASSWORD=$(echo ${INFO} | awk -F "|" '{ print $2 }') useradd -m -p "${PASSWORD}" "${USERNAME}" ;; *) echo "[ERROR] - Pengguna tidak ditambahkan." esac
Saya telah menekan tombol "Batal" di kotak dialog, sehingga saya mengalami kesalahan menggunakan pola default (*).
Reference scripts
Untuk lebih nyaman dengan pernyataan kasus, Anda dapat melihat kode yang ada yang ditulis menggunakan pernyataan kasus. Tempat yang lebih baik untuk memulai adalah dengan membaca skrip startup di bawah direktori /etc/init.d. Sebagai contoh, saya telah menginstal virtualbox di mesin saya dan memiliki file startup di bawah direktori /etc/init.d. Ada bagian kode yang ditulis menggunakan pernyataan kasus yang akan memberikan gambaran yang baik tentang cara kerja pernyataan kasus.
$ cd /etc/init.d/
$ cat bluetoothConclusion
Dalam artikel ini, kita telah melihat apa itu pernyataan kasus di Bash dan berbagai cara menggunakannya. Pernyataan kondisional dan pernyataan kasus memiliki tujuan yang sama. Anda harus memiliki pemahaman yang lebih baik tentang metode mana yang sesuai dengan kasus penggunaan. Pernyataan kasus juga akan digunakan ketika Anda harus membuat fungsi bantuan menggunakan program getopt dan getopts. Buat skrip dan mulailah mempraktikkan contoh yang telah kami berikan di sini untuk memahami lebih lanjut tentang pernyataan kasus. Panduan skrip
Bash: Scripting
Bash – Pernyataan BersyaratBash Scripting – String ManipulationBash Scripting – Perintah Printf Dijelaskan Dengan ContohBash Scripting – Array Terindeks Dijelaskan Dengan ContohBash Scripting – Asosiatif Array Dijelaskan Dengan ContohBash Scripting – Untuk Loop Dijelaskan Dengan ContohBash Scripting – Sementara Dan Sampai Loop Dijelaskan Dengan ContohPengalihan Bash Dijelaskan Dengan ContohBash Scripting – Variabel yang Dijelaskan Dengan ContohBash Scripting – Fungsi Dijelaskan Dengan ContohBash Perintah Gema Dijelaskan Dengan Contoh Di LinuxBash Tutorial Heredoc Untuk Pemula