Cara Menggunakan Pernyataan Bash If (Dengan 4 Contoh)

Diterbitkan: 2023-05-08
Laptop Linux menampilkan jendela terminal dengan pola globe di latar belakang dan tanda air biner
fatmawati achmad zaenuri/Shutterstock
Gunakan pernyataan Linux Bash if untuk membuat ekspresi kondisional dengan struktur if then fi . Tambahkan kata kunci elif untuk ekspresi bersyarat tambahan, atau kata kunci else untuk menentukan bagian kode penampung-semua yang dijalankan jika tidak ada klausa bersyarat sebelumnya yang dijalankan.

Semua skrip Bash non-sepele perlu membuat keputusan. Pernyataan Bash if memungkinkan skrip Linux Anda mengajukan pertanyaan dan, bergantung pada jawabannya, menjalankan bagian kode yang berbeda. Begini cara kerjanya.

Apa itu Eksekusi Bersyarat?

Di semua skrip Bash kecuali yang paling sepele, biasanya ada kebutuhan untuk aliran eksekusi untuk mengambil jalur yang berbeda melalui skrip, sesuai dengan hasil keputusan. Ini disebut eksekusi bersyarat.

Salah satu cara untuk memutuskan cabang eksekusi mana yang akan diambil adalah dengan menggunakan pernyataan if . Anda mungkin mendengar pernyataan if disebut pernyataan if then , atau pernyataan if then else . Mereka nama yang berbeda untuk hal yang sama.

9 Contoh for Loops di Linux Bash Scripts
TERKAIT 9 Contoh for Loops di Linux Bash Scripts

Pernyataan if mengatakan bahwa jika sesuatu benar, maka lakukan ini . Tetapi jika sesuatu itu salah, lakukan itu saja. “Sesuatu” bisa berupa banyak hal, seperti nilai variabel, keberadaan file, atau apakah dua string cocok.

Eksekusi bersyarat sangat penting untuk skrip yang bermakna. Tanpa itu, Anda sangat terbatas pada apa yang bisa Anda lakukan untuk skrip Anda. Kecuali itu dapat membuat keputusan yang berarti, Anda tidak akan dapat mengambil masalah dunia nyata dan menghasilkan solusi yang bisa diterapkan.

Pernyataan if mungkin merupakan cara yang paling sering digunakan untuk mendapatkan eksekusi bersyarat. Inilah cara menggunakannya dalam skrip Bash.

TERKAIT: Cara Memeriksa Apakah File Ada di Linux Bash Scripts

Contoh Pernyataan If Sederhana

Ini adalah bentuk kanonik dari pernyataan if yang paling sederhana:

 jika [kondisi-ini-benar]
Kemudian
  jalankan-pernyataan-ini
fi

Jika kondisi di dalam teks menjadi benar, baris skrip di klausa then dieksekusi. Jika Anda melihat skrip yang ditulis oleh orang lain, Anda mungkin melihat pernyataan if ditulis seperti ini:

 if [kondisi-ini-benar]; Kemudian
  jalankan-pernyataan-ini
fi

Beberapa hal yang perlu diperhatikan:

  • Pernyataan if diakhiri dengan menulis fi .
  • Harus ada spasi setelah tanda kurung pertama ” [ ” dan sebelum tanda kurung kedua ” ] ” dari pengujian bersyarat.
  • Jika Anda akan meletakkan kata kunci then pada baris yang sama dengan uji kondisional, pastikan Anda menggunakan titik koma ” ; ” setelah ujian.

Kita dapat menambahkan klausa else opsional agar beberapa kode dieksekusi jika uji kondisi terbukti salah. Klausa else tidak membutuhkan kata kunci then .

 jika [kondisi-ini-benar]
Kemudian
  jalankan-pernyataan-ini
kalau tidak
  jalankan-pernyataan-ini-sebagai gantinya
fi

Skrip ini menunjukkan contoh sederhana pernyataan if yang menggunakan klausa else . Tes bersyarat memeriksa apakah usia pelanggan lebih besar atau sama dengan 21. Jika ya, pelanggan dapat memasuki tempat, dan klausa then dijalankan. Jika mereka belum cukup umur, klausa else dijalankan, dan mereka tidak diizinkan masuk.

 #!/bin/bash

customer_age=25

jika [ $customer_age -ge 21 ]
Kemudian
  gema "Ayo masuk."
kalau tidak
  gema "Kamu tidak bisa masuk."
fi

Salin skrip dari atas ke editor, simpan sebagai file bernama "if-age.sh", dan gunakan perintah chmod untuk membuatnya dapat dieksekusi. Anda harus melakukannya dengan setiap skrip yang kita diskusikan.

 chmod +x if-age.sh 

Menggunakan chmod untuk membuat skrip dapat dieksekusi

Mari jalankan skrip kita.

 ./if-age.sh 

Menjalankan skrip if-age.sh dengan variabel usia diatur ke 25

Sekarang kita akan mengedit file dan menggunakan usia kurang dari 21 tahun.

 customer_age=18

Buat perubahan itu pada skrip Anda, dan simpan perubahan Anda. Jika kita menjalankannya sekarang, kondisi kembali salah, dan klausa lain dijalankan.

 ./if-age.sh 

Menjalankan skrip if-age.sh dengan variabel usia diatur ke 18

Klausul Elif

Klausa elif menambahkan tes kondisional tambahan. Anda dapat memiliki klausa elif sebanyak yang Anda suka. Mereka dievaluasi pada gilirannya sampai salah satu dari mereka ditemukan benar. Jika tidak ada tes kondisional elif yang terbukti benar, klausa else , jika ada, akan dijalankan.

Skrip ini meminta nomor lalu memberi tahu Anda apakah itu ganjil atau genap. Nol adalah bilangan genap, jadi kita tidak perlu menguji apapun.

Semua angka lainnya diuji dengan menemukan modulo dari pembagian dengan dua. Dalam kasus kita, modulo adalah bagian pecahan dari hasil pembagian dua. Jika tidak ada bagian pecahan, angka tersebut habis dibagi dua, persis. Oleh karena itu merupakan bilangan genap.

 #!/bin/bash

echo -n "Masukkan angka:"

membaca nomor

jika [ $angka -eq 0 ]
Kemudian
  echo "Anda memasukkan nol. Nol adalah bilangan genap."
elif [ $(($angka % 2)) -eq 0 ]
Kemudian
  echo "Anda memasukkan $angka. Ini adalah bilangan genap."
kalau tidak
  echo "Anda memasukkan $angka. Angka ganjil."
fi

Untuk menjalankan skrip ini, salin ke editor dan simpan sebagai "if-even.sh", lalu gunakan chmod untuk membuatnya dapat dieksekusi.

Mari jalankan skrip beberapa kali dan periksa hasilnya.

 ./jika-genap.sh 

Menjalankan skrip if-even.sh dengan berbagai masukan

Itu semua bekerja dengan baik.

Berbagai Bentuk Tes Bersyarat

Tanda kurung ” [] ” yang kami gunakan untuk pengujian bersyarat kami adalah cara singkat untuk memanggil program test . Karena itu, semua perbandingan dan pengujian yang mendukung test tersedia untuk pernyataan if Anda.

Ini hanya beberapa di antaranya:

  • ! ekspresi : Benar jika ekspresi salah.
  • -n string : Benar jika panjang string lebih besar dari nol.
  • -z string : Benar jika panjang string adalah nol. Artinya, ini adalah string kosong.
  • string1 = string2 : Benar jika string1 sama dengan string2.
  • string1 != string2 : True jika string1 tidak sama dengan string2.
  • integer1 -eq integer2 : Benar jika integer1 secara numerik sama dengan integer2
  • integer1 -qt integer2 : Benar jika integer1 secara numerik lebih besar dari integer2
  • integer1 -lt integer2 : Benar jika integer1 secara numerik lebih kecil dari integer2
  • -d directory : Benar jika direktori itu ada.
  • -e file : Benar jika file itu ada.
  • -s file : True jika file tersebut ada dengan ukuran lebih dari nol.
  • -r file : Benar jika file tersebut ada dan izin baca disetel.
  • -w file : Benar jika file tersebut ada dan izin menulis disetel.
  • -x file : Benar jika file ada dan izin eksekusi diatur.

Dalam tabel, "file" dan "direktori" dapat menyertakan jalur direktori, baik relatif maupun absolut.

Tanda sama dengan “ = ” dan uji persamaan -eq tidak sama. Tanda sama dengan melakukan perbandingan teks karakter demi karakter . Tes kesetaraan melakukan perbandingan numerik .

Kita dapat melihat ini dengan menggunakan program test pada baris perintah.

 uji "string ini" = "string ini"
 uji "string ini" = "string itu"
 tes 1 = 001
 uji 1 -eq 001

Dalam setiap kasus, kami menggunakan perintah echo untuk mencetak kode pengembalian dari perintah terakhir. Nol berarti benar, satu berarti salah.

Menggunakan program uji pada baris perintah untuk menguji perbandingan yang berbeda

Menggunakan tanda sama dengan ” = ” memberi kita jawaban yang salah dengan membandingkan 1 dengan 001. Itu benar, karena keduanya adalah rangkaian karakter yang berbeda. Secara numerik nilainya sama—satu—sehingga operator -eq mengembalikan respons yang sebenarnya.

Jika Anda ingin menggunakan pencocokan karakter pengganti dalam pengujian bersyarat, gunakan sintaks kurung ganda ” [[ ]] ”.

 #!/bin/bash

jika [[ $USER == *ve ]]
Kemudian
  gema "Halo $USER"
kalau tidak
  echo "$USER tidak diakhiri dengan 've'"
fi

Skrip ini memeriksa nama akun pengguna saat ini. Jika diakhiri dengan “ ve ”, nama pengguna akan dicetak. Jika tidak diakhiri dengan " ve ", skrip akan memberi tahu Anda, dan selesai.

 ./jika-liar.sh 

Menjalankan skrip if-wild.sh yang menampilkan pencarian wildcard dalam uji kondisi pernyataan if

TERKAIT: Pengujian Bersyarat di Bash: if, then, else, elif

Pernyataan Jika Bersarang

Anda dapat memasukkan pernyataan if di dalam pernyataan if lainnya.

Ini sangat bisa diterima, tetapi if pernyataan bersarang membuat kode menjadi kurang mudah dibaca, dan lebih sulit dipertahankan. Jika Anda mendapati diri Anda menumpuk lebih dari dua atau tiga tingkat pernyataan if , Anda mungkin perlu mengatur ulang logika skrip Anda.

Inilah skrip yang menggunakan hari sebagai angka, dari satu sampai tujuh. Satu hari Senin, tujuh hari Minggu.

Ini memberitahu kita jam buka toko. Jika itu adalah hari kerja atau Sabtu, itu melaporkan toko buka. Jika hari Minggu, kabarnya toko tutup.

Jika toko terbuka, pernyataan if bersarang membuat pengujian kedua. Jika hari Rabu, itu memberitahu kita bahwa itu hanya buka di pagi hari.

 #!/bin/bash

# dapatkan hari sebagai nomor 1..7
hari=$(tanggal +"%u")

jika [ $hari -le 6 ]
Kemudian
  ## toko buka
  jika [ $hari -eq 3 ]
  Kemudian
    # Rabu adalah setengah hari
    echo "Pada hari Rabu kami hanya buka di pagi hari."
  kalau tidak
    # hari minggu reguler dan Sabtu
   gema "Kami buka sepanjang hari."
  fi
kalau tidak
  # tidak buka pada hari Minggu
  echo "Ini hari Minggu, kami tutup."
fi

Salin skrip ini ke editor, simpan sebagai file bernama "if-shop.sh", dan buat agar dapat dieksekusi menggunakan perintah chmod .

Kami menjalankan skrip satu kali dan kemudian mengubah jam komputer menjadi hari Rabu, dan menjalankan kembali skrip tersebut. Kami kemudian mengubah hari menjadi hari Minggu dan menjalankannya sekali lagi.

 ./jika-toko.sh
 ./jika-toko.sh
 ./jika-toko.sh 

Menjalankan skrip if-shop.sh dengan jam komputer disetel ke hari kerja, lalu Rabu, lalu Minggu

TERKAIT: Cara Menggunakan Tes Bersyarat Braket Ganda di Linux

Kasus Untuk jika

Eksekusi bersyarat adalah apa yang memberi kekuatan pada pemrograman dan skrip, dan pernyataan if yang sederhana mungkin merupakan cara yang paling umum digunakan untuk mengalihkan jalur eksekusi dalam kode. Tapi itu tidak berarti itu selalu jawabannya.

Menulis kode yang baik berarti mengetahui opsi apa yang Anda miliki dan mana yang terbaik untuk digunakan untuk menyelesaikan persyaratan tertentu. Pernyataan if memang bagus, tetapi jangan biarkan itu menjadi satu-satunya alat di tas Anda. Secara khusus, lihat pernyataan case yang dapat menjadi solusi dalam beberapa skenario.

TERKAIT: Cara Menggunakan Pernyataan Kasus dalam Skrip Bash