Bash Basics Series #7: Pernyataan If Else - Kamplongan

Bash Basics Series #7: Pernyataan If Else

Bash mendukung pernyataan if-else sehingga Kalian dapat menggunakan penalaran logis dalam skrip shell Kalian.

Sintaks umum if-else adalah seperti ini:

if [ expression ]; then

  ## execute this block if condition is true else go to next

elif [ expression ]; then

  ## execute this block if condition is true else go to next

else 

  ## if none of the above conditions are true, execute this block

fi

Seperti yang Kalian perhatikan:

  • elif digunakan untuk kondisi “else if”.
  • Kondisi if else selalu diakhiri dengan fi
  • penggunaan titik koma ; Dan then kata kunci

Sebelum saya menunjukkan contoh if dan else-if, izinkan saya membagikan ekspresi perbandingan umum (juga disebut kondisi pengujian) terlebih dahulu.

Kondisi pengujian

Berikut adalah operator kondisi pengujian yang dapat Kalian gunakan untuk perbandingan numerik:

Kondisi Setara dengan benar ketika
$a -lt $b $a less Tada $b)
$a -gt $b $a > $b ($a adalah Gpemakan Tada $b)
$a -le $b $a less atau esama dengan $b)
$a -ge $b $a >= $b ($a adalah Greator atau esama dengan $b)
$a -eq $b $a sama dengan $b
$a -ne $b $a tidak sama dengan $b

Jika Kalian membandingkan string, Kalian dapat menggunakan kondisi pengujian ini:

Kondisi Setara dengan benar ketika
“$a” = “$b” $a sama dengan $b
“$a” == “$b” $a sama dengan $b
“$a” != “$b” $a berbeda dengan $b
-z “$a” $a kosong

Ada juga ketentuan untuk pemeriksaan jenis file:

Kondisi Setara dengan benar ketika
-f $a $a adalah file
-d $a $a adalah sebuah direktori
-L$a $a adalah tautan

Sekarang setelah Kalian mengetahui berbagai ekspresi perbandingan, mari kita lihat aksinya dalam berbagai contoh.

Gunakan if pernyataan di bash

Mari buat skrip yang memberi tahu Kalian apakah angka yang diberikan genap atau tidak.

Ini skrip saya bernama even.sh:

#!/bin/bash

read -p "Enter the number: " num

mod=$(($num%2))

if [ $mod -eq 0 ]; then
	echo "Number $num is even"
fi

Operasi modulus (%) mengembalikan nol ketika dibagi sempurna dengan angka yang diberikan (2 dalam kasus ini).

🚧

Berikan perhatian khusus pada ruang. Harus ada jarak antara tanda kurung buka dan tutup serta kondisinya. Demikian pula, ruang harus sebelum dan sesudah operator kondisional (-le, == dll).

Inilah yang ditampilkan ketika saya menjalankan skrip:

Menjalankan skrip dengan contoh pernyataan if di bash

Apakah Kalian memperhatikan bahwa skrip memberi tahu Kalian saat angka genap tetapi tidak menampilkan apa pun saat angka ganjil? Mari kita tingkatkan skrip ini dengan menggunakan else.

Gunakan pernyataan if else

Sekarang saya menambahkan pernyataan lain di skrip sebelumnya. Dengan cara ini ketika Kalian mendapatkan modulus bukan nol (karena bilangan ganjil tidak dibagi 2), ia akan masuk ke blok else.

#!/bin/bash

read -p "Enter the number: " num

mod=$(($num%2))

if [ $mod -eq 0 ]; then
	echo "Number $num is even"
else
	echo "Number $num is odd"
fi

Mari kita jalankan lagi dengan angka yang sama:

Menjalankan skrip bash yang memeriksa angka genap ganjil

Seperti yang Kalian lihat, skrip lebih baik karena juga memberi tahu Kalian jika angkanya ganjil.

Gunakan pernyataan elif (else if).

Berikut ini skrip yang memeriksa apakah angka yang diberikan positif atau negatif. Dalam matematika, 0 bukan positif atau negatif. Skrip ini juga menjaga fakta itu.

#!/bin/bash

read -p "Enter the number: " num

if [ $num -lt 0 ]; then
	echo "Number $num is negative"
elif [ $num -gt 0 ]; then
	echo "Number $num is positive"
else
	echo "Number $num is zero"
fi

Biarkan saya menjalankannya untuk mencakup ketiga kasus di sini:

Menjalankan skrip dengan pernyataan bash elif

Gabungkan beberapa kondisi dengan operator logika

Sejauh ini bagus. Tapi apakah Kalian tahu bahwa Kalian mungkin memiliki beberapa kondisi dalam satu dengan menggunakan operator logika seperti AND (&&), OR (||) dll? Ini memberi Kalian kemampuan untuk menulis kondisi yang kompleks.

Mari kita tulis skrip yang memberi tahu Kalian apakah tahun tertentu adalah tahun kabisat atau bukan.

Apakah Kalian ingat kondisi untuk menjadi tahun kabisat? Harusnya dibagi 4, tapi kalau habis dibagi 100, bukan tahun kabisat. Namun, jika habis dibagi 400, itu adalah tahun kabisat.

Ini skrip saya.

#!/bin/bash

read -p "Enter the year: " year

if [[ ($(($year%4)) -eq 0 && $(($year%100)) != 0) || ($(($year%400)) -eq 0) ]]; then
	echo "Year $year is leap year"
else
	echo "Year $year is normal year"
fi

💡

Perhatikan penggunaan tanda kurung ganda [[ ]]di atas. Ini wajib jika Kalian menggunakan operator logika.

Verifikasi skrip dengan menjalankannya dengan data berbeda:

Contoh menjalankan skrip bash dengan operator logika di pernyataan if

🏋️ Waktu latihan

Mari berolahraga 🙂

Latihan 1: Tulis skrip bash shell yang memeriksa panjang string yang diberikan sebagai argumen. Jika tidak ada argumen yang diberikan, ‘string kosong’ akan dicetak.

Latihan 2: Tulis skrip shell yang memeriksa apakah file yang diberikan ada atau tidak. Kalian dapat memberikan jalur file lengkap sebagai argumen atau menggunakannya langsung dalam skrip.

Petunjuk: Gunakan -f untuk file

Latihan 3: Tingkatkan skrip sebelumnya dengan memeriksa apakah file yang diberikan adalah file biasa, direktori atau tautan atau jika tidak ada.

Petunjuk: Gunakan -f, -d dan -L

Latihan 3: Tulis skrip yang menerima dua argumen string. Skrip harus memeriksa apakah string pertama berisi argumen kedua sebagai substring.

Petunjuk: Lihat bab sebelumnya tentang string bash

Kalian dapat mendiskusikan solusi Kalian di Komunitas:

Latih Latihan di Bash Basics Seri #7: Pernyataan If Else

Jika Kalian mengikuti seri Bash Basics di It’s FOSS, Kalian dapat mengirimkan dan mendiskusikan jawaban latihan di akhir bab: Rekan anggota berpengalaman didorong untuk memberikan umpan balik mereka kepada anggota baru. Perhatikan bahwa mungkin ada lebih dari satu jawaban untuk masalah yang diberikan.

Kami harap Kalian menikmati Bash Basics Series. Di bab selanjutnya, Kalian akan belajar tentang penggunaan loop di Bash.

Dasar-Dasar Bash #8: Untuk, Sementara, dan Hingga Pengulangan

Di bab terakhir dari seri Bash Basics, pelajari tentang for, while, dan until loops.

Terus bashing!

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: