GNU/Linux >> Belajar Linux >  >> Linux

Sintaks Pernyataan Bash case dan Contohnya

Pendahuluan

case ba bash Pernyataan adalah bentuk paling sederhana dari pernyataan kondisional if elif else. case pernyataan menyederhanakan kondisi kompleks dengan beberapa pilihan yang berbeda. Pernyataan ini lebih mudah dipelihara dan lebih mudah dibaca daripada if . yang disarangkan pernyataan.

case pernyataan menguji nilai input hingga menemukan pola yang sesuai dan menjalankan perintah yang terkait dengan nilai input itu. Dengan demikian, ini adalah pilihan yang sangat baik untuk membuat menu di mana pengguna memilih opsi yang memicu tindakan yang sesuai.

Dalam tutorial ini, Anda akan mempelajari case bash pernyataan dasar dan cara menggunakannya dalam skrip shell.

Prasyarat

  • Mesin yang menjalankan Linux.
  • Akses ke baris perintah.
  • Editor teks seperti vi/vim.

Sintaks Pernyataan kasus Bash

case ba bash pernyataan mengambil sintaks berikut:

case $variable in
pattern-1)
  commands;;
pattern-2)
  commands;;
pattern-3)
  commands;;
pattern-N)
  commands;;
*)
  commands;;
esac

case pernyataan dimulai dengan case kata kunci diikuti oleh $variable dan in kata kunci. Pernyataan diakhiri dengan case kata kunci mundur - esac .

$variable

  • Skrip membandingkan input $variable terhadap pola di setiap klausa sampai menemukan kecocokan.

Pola

  • Pola dan perintahnya membuat klausa , yang diakhiri dengan ;; .
  • Pola mendukung karakter khusus.
  • ) operator mengakhiri daftar pola.
  • | operator memisahkan beberapa pola.
  • Skrip mengeksekusi perintah yang sesuai dengan pola pertama yang cocok dengan input $variable .
  • Tanda bintang * simbol mendefinisikan kasus default, biasanya dalam pola akhir.

Status Keluar

Skrip memiliki dua status keluar:

  • 0 . Status pengembalian saat input tidak cocok dengan pola.
  • Status perintah yang dijalankan . Jika perintah cocok dengan variabel input ke suatu pola, status keluar perintah yang dijalankan akan dikembalikan.

Contoh Pernyataan Kasus Bash

Bagian ini menunjukkan contoh praktis penggunaan case ba bash pernyataan.

Contoh 1:Keluarkan Deskripsi untuk Setiap Opsi

Contoh berikut adalah skrip yang memungkinkan pengguna memilih warna dan menampilkan komentar yang sesuai dengan input menggunakan perintah echo.

Ikuti petunjuk di bawah ini:

1. Buka terminal (Ctrl + Alt + T ) dan buat skripnya:

vi color.sh

2. Tambahkan baris berikut ke skrip:

#!/bin/bash
echo "Which color do you like best?"
echo "1 - Blue"
echo "2 - Red"
echo "3 - Yellow"
echo "4 - Green"
echo "5 - Orange"
read color;
case $color in
  1) echo "Blue is a primary color.";;
  2) echo "Red is a primary color.";;
  3) echo "Yellow is a primary color.";;
  4) echo "Green is a secondary color.";;
  5) echo "Orange is a secondary color.";;
  *) echo "This color is not available. Please choose a different one.";; 
esac

Masing-masing baris memiliki peran sebagai berikut:

  • Baris pertama di setiap skrip biasanya adalah shebang (#! ), yang menginstruksikan sistem operasi juru bahasa mana yang akan digunakan untuk mengurai file.
  • Baris 2-7 adalah menu opsi yang disajikan kepada pengguna untuk dipilih.
  • Warna read color; variabel meminta jawaban kepada pengguna dan menyimpannya.
  • case pernyataan berisi kemungkinan tanggapan yang sesuai dengan input pengguna. Dalam contoh ini, outputnya adalah echo keluaran perintah.
  • Baris terakhir, esac , mengakhiri case pernyataan.

3. Simpan skrip dan keluar vi dengan perintah berikut:

:wq

4. Sebelum menjalankan setiap skrip, pastikan untuk melakukan chmod agar dapat dieksekusi:

chmod +x color.sh

5. Jalankan skrip:

./color.sh

Script menawarkan menu opsi dan menampilkan pesan yang berbeda tergantung pada opsi yang dipilih.

Contoh 2:Menggunakan Beberapa Pola

case pernyataan memungkinkan menggunakan beberapa pola di setiap klausa. Jika ekspresi cocok dengan pola yang ditentukan, skrip akan mengeksekusi perintah dalam klausa tersebut.

Contoh skrip ini meminta pengguna untuk memasukkan bulan dan menampilkan jumlah hari. Ada tiga kemungkinan jawaban:

  • 30 hari.
  • 31 hari.
  • 28 atau 29 hari untuk bulan Februari.

Ikuti langkah-langkah di bawah ini untuk membuat skrip:

1. Buat skrip month.sh dengan menjalankan:

vi month.sh

2. Masukkan baris berikut dan simpan skrip:

#!/bin/bash
shopt -s nocasematch
echo "Enter the name of a month."
read month
case $month in
  February)
 
echo "There are 28/29 days in $month.";;
  April | June | September | November)
echo "There are 30 days in $month.";;
  January | March | May | July | August | October | December)
echo "There are 31 days in $month.";;
  *)
echo "Unknown month. Please check if you entered the correct month name: $month";;
esac

Pada contoh di atas:

  • shopt perintah dengan -s nocasematch opsi mengurangi kemungkinan kesalahan dengan pencocokan pola yang tidak peka huruf besar/kecil.
  • Simbol pipa | memisahkan pola di setiap klausa.

3. Jadikan skrip dapat dieksekusi:

chmod +x month.sh

4. Jalankan skrip:

./month.sh

Script mengabaikan perbedaan dalam kasus dan menampilkan jumlah hari yang benar dalam bulan yang dipilih.

Contoh 3:untuk Loop

Gunakan for loop dalam case pernyataan ketika ada banyak ekspresi untuk diproses. Skrip berikut mengembalikan semua jenis file dari direktori.

Ikuti langkah-langkah di bawah ini:

1. Buat skrip shell:

vi filelist.sh

2. Masukkan baris berikut lalu simpan skrip:

#!/bin/bash
for file in $(ls)
do
Extension=${file##*.}
case "$Extension" in
  sh) echo "Shell script: $file";;
  md) echo "A markdown file: $file";;
  png) echo "PNG image file: $file";;
  txt) echo "A text file: $file";;
  zip) echo "An archive: $file";;
  conf) echo "A configuration file: $file";;
  py) echo "A Python script: $file";;
  *) echo "Unknown file type: $file";;
esac
done

Pada contoh di atas:

  • ls perintah menarik daftar file dari direktori.
  • for loop menerapkan file globbing untuk mengekstrak setiap ekstensi file.

3. Jadikan skrip dapat dieksekusi:

chmod +x filelist.sh

4. Jalankan skrip:

./filelist.sh

Script mengidentifikasi setiap jenis file yang ada di direktori saat ini.

Contoh 4:Membuat Buku Alamat

Gunakan case pernyataan untuk membuat database sederhana dan dengan cepat menghasilkan informasi yang diminta. Contoh berikut menampilkan nama, alamat email, dan alamat orang yang dipilih:

1. Buat skrip:

vi phonebook.sh

2. Tambahkan baris berikut dan simpan skrip:

#!/bin/bash
echo "Choose a contact to display information:"
echo "[C]hris Ramsey"
echo "[J]ames Gardner"
echo "[S]arah Snyder"
echo "[R]ose Armstrong"
read person
case "$person" in
  "C" | "c" ) echo "Chris Ramsey"
echo "[email protected]"
echo "27 Railroad Dr. Bayside, NY";;
  "J" | "j" ) echo "James Gardner"
echo "[email protected]"
echo "31 Green Street, Green Cove Springs, FL";;
  "S" | "s") echo "Sarah Snyder"
echo "[email protected]"
echo "8059 N. Hartford Court, Syosset, NY";;
  "R" | "r") echo "Rose Armstrong"
echo "[email protected]"
echo "49 Woodside St., Oak Forest, IL";;
  *) echo "Contact doesn't exist.";;
esac

3. Chmod skripnya:

chmod +x phonebook.sh

3. Jalankan skrip:

./phonebook.sh

Skrip menampilkan detail kontak untuk orang yang dipilih. Memilih opsi yang tidak terdaftar akan memberi tahu pengguna bahwa kontak tidak ada.

Contoh 5:Periksa Jenis Karakter

Contoh berikut menunjukkan cara menggunakan case pernyataan untuk memeriksa jenis karakter yang telah dimasukkan pengguna.

Ikuti langkah-langkah di bawah ini:

1. Buat skrip:

vi character.sh

2. Tambahkan baris berikut dan simpan skrip:

#!/bin/bash
echo "Enter a character:"
read var
case $var in
  [[:lower:]) echo "You entered a lowercase character.";;
  [[:upper:]]) echo "You entered an uppercase character.";;
  [0-9]) echo "You entered a digit.";;
  ?) echo "You entered a special character.";;
  *) echo "You entered multiple characters.";;
esac

Pada contoh di atas:

  • $var variabel kontrol menyimpan input.
  • Daripada mengetik semua kemungkinan kombinasi untuk dicocokkan, gunakan tanda kurung siku [] untuk menunjukkan rentang karakter. Gunakan tanda kurung siku ganda [[]] untuk rentang POSIX. if-else mengharuskan memasukkan setiap kondisi karakter satu per satu.
  • ? karakter mencakup karakter yang bukan huruf kecil, huruf besar, atau angka. Itu hanya menggantikan satu karakter, bukan * yang menggantikan semua hal lain yang tidak tercakup oleh ketentuan di atas.

3. Ubah izin untuk membuat skrip dapat dieksekusi:

chmod +x character.sh

4. Jalankan skrip:

./character.sh

Output menyatakan jenis karakter yang dimasukkan setelah mencocokkannya dengan kondisi yang ditentukan.


Linux
  1. Perintah AWK Linux – Contoh Sintaks Penggunaan Linux dan Unix

  2. 4 Contoh Pernyataan Awk If ( if, if else, if else if, :? )

  3. 4 Contoh Pernyataan Bash If ( If then fi, If then else fi, If elif else fi, Nested if )

  1. Cara memprogram dengan Bash:Sintaks dan alat

  2. Panduan Bash For Loop dan Contohnya

  3. 5 Contoh Pernyataan Kasus Bash

  1. Pernyataan Bash:Sintaks dan Contoh

  2. Pernyataan Bash If-Else Dengan Contoh

  3. Contoh Bash For Loop dan While Loop