Dalam panduan ini, kita akan mempelajari penggunaan pernyataan kondisional dalam skrip Bash dengan contoh. Pengambilan keputusan merupakan langkah penting dalam pemrograman. Mungkin ada situasi di mana kondisi tertentu harus dipenuhi dan berdasarkan itu Anda harus menulis beberapa logika. Inilah yang dilakukan oleh pernyataan bersyarat. Pernyataan bersyarat memungkinkan Anda untuk menulis logika dan mengambil keputusan. Konsep yang Anda baca di sini akan sama untuk semua bahasa pemrograman di luar sana tetapi dengan sintaksis dan perbedaan implementasi.
Contents
Sintaks pernyataan kondisionalOperator pengujian fileOperator pembanding bilangan bulatPernyataan kondisional yang ringkasOperator perbandingan stringKesimpulanSintaks pernyataan bersyarat
Blok bangunan dari pernyataan bersyarat di bash adalah sebagai berikut.
if [ [ kondisi ]] lalu kode elif [[ kondisi ]] lalu kode kode lain fi
Penjelasan:
Kata kunci “if” dan “fi” menandai awal dan akhir pernyataan kondisional. Setiap pernyataan if harus diikuti oleh kata kunci “then”. Baik [[ ]] atau [ ] harus digunakan untuk mengevaluasi kondisi. Jika kondisi dievaluasi menjadi “True”, maka blok kode akan dieksekusi. Pernyataan bersyarat dapat memiliki satu kondisi if dan beberapa kondisi elif. Jika suatu kondisi dievaluasi benar, semua pernyataan kondisional berikutnya dilewati. Jika semua blok if atau elif dievaluasi salah maka blok kode dari klausa “else” akan dijalankan. Meskipun tidak ada aturan indentasi yang ketat, tinggalkan 2 spasi untuk blok kode yang akan memberikan keterbacaan yang lebih baik.
Untuk mengevaluasi kondisi, bash memiliki perintah bawaan yang disebut “test”. Tanda kurung siku sama dengan perintah tes sehingga Anda dapat menggunakan perintah tes atau tanda kurung siku.
$ type -a test test adalah shell builtin test is /usr/bin/test test is /bin/test
Ada banyak operator didukung oleh perintah tes untuk mengevaluasi kondisi dan kita akan melihat bagaimana menggunakan operator ini di bagian yang akan datang. Untuk mendapatkan daftar operator, Anda dapat menjalankan salah satu dari perintah di bawah ini.
$ man test$ help test
File test operator
Operator tes file dapat digunakan untuk bekerja dengan objek file atau direktori. Dengan menggunakan operator pengujian file, Anda dapat memvalidasi apakah file atau direktori tertentu ada atau tidak, objek yang diberikan adalah file atau direktori, jenis file apa yang Anda tangani, ukuran file, dll. Jalankan perintah berikut dan perhatikan operator file section.
$ man test
Tidak semua operator sering digunakan tetapi saya akan memandu Anda melalui yang paling penting.
Untuk memeriksa apakah file yang diberikan ada atau tidak, gunakan tanda -e. Di sini saya memeriksa apakah file .bashrc ada di direktori home saya atau tidak.
if [[ -e /home/${USER}/.bashrc ]] lalu echo "File ada" else echo "File tidak ada" fi
Untuk memeriksa apakah direktori tertentu ada atau tidak, gunakan flag -d. Di sini saya memeriksa direktori desktop di folder rumah saya.
if [[ -d ~/Desktop/ ]] lalu echo "Direktori ada" else echo "Direktori tidak ada" fi
Untuk memeriksa apakah file tidak berukuran nol file, gunakan flag -s. Di sini, saya telah membuat file bernama “zero_byte.txt” dan menambahkan beberapa text.
$ touch ~/Desktop/zero_byte.txt$ echo “Writing something” >> ~/Desktop/zero_byte.txt
$ if [[ -s ~ /Desktop/zero_byte.txt ]] lalu echo "File tidak nol byte" else echo "File nol byte" fi
Anda dapat menggunakan ! simbol dengan bendera apa pun yang akan membalikkan hasilnya. Saya menggunakan contoh yang sama seperti di atas tetapi dengan “!” simbol. Ini akan membalikkan dan mencetak file sebagai file byte nol, meskipun bukan.
$ if [[ ! -s ~/Desktop/zero_byte.txt ]] lalu echo "File bukan nol byte" else echo "File adalah nol byte" fi
Integer operator perbandingan
Di bawah ini adalah operator perbandingan bilangan bulat yang akan mengevaluasi terhadap dua bilangan bulat yang diberikan.
-eq => Integer X sama dengan Integer Y -ne => Integer X tidak sama dengan Integer Y -gt => Integer X lebih besar dari Integer Y -ge => Integer X lebih besar atau sama dengan Integer Y -lt => Integer X adalah lebih kecil dari Integer Y -le => Integer X lebih kecil dari atau sama dengan Integer Y
Setiap perintah bash mengembalikan kode keluar antara 0-255 dan kami akan menggunakan operator perbandingan Integer untuk mengevaluasi kode keluar. Dalam contoh di bawah ini, saya menetapkan kode keluar dari perintah nvim ke variabel yang disebut EXCODE dan melakukan perbandingan bilangan bulat. Karena neovim tidak tersedia, ia akan membuang kode keluar 127 (kesalahan perintah tidak ditemukan).
$ EXCODE=$(nvim;echo $?)
$ if [[ $EXCODE -eq 0 ]] then echo "nvim is available untuk menggunakan" elif [[ $EXCODE -eq 127 ]] lalu echo "Perintah tidak ditemukan, periksa apakah nvim diinstal atau tidak" else echo "Kembalikan kode selain 0 & 127. Periksa dan perbaiki kesalahan" fi
Dalam contoh di atas , saya telah menggunakan pernyataan elif untuk pernyataan pertama dalam artikel ini. Pertama kondisi “jika” dievaluasi untuk memeriksa apakah kode yang dikembalikan adalah nol, yang mengembalikan false, kemudian kontrol diteruskan ke pernyataan elif dan kondisi dievaluasi menjadi benar dan menjalankan blok kode. Anda dapat menambahkan pernyataan elif sebanyak mungkin untuk mengevaluasi kondisi yang berbeda.
Anda juga dapat mengevaluasi beberapa kondisi dalam satu pernyataan if atau elif menggunakan operator logika AND, OR.
LOGICAL AND && symbol => Semua kondisi harus dievaluasi true.LOGICAL ATAU || simbol => Semua kondisi harus dievaluasi sebagai true.
Di bawah ini adalah contoh untuk operator AND logis di mana integer yang disimpan dalam variabel X dan Y dievaluasi sebagai true.
$ X=10$ Y=15
$ if [[ $ X -eq 10 && $Y -eq 15 ]] lalu echo "ok untuk melanjutkan" else echo "Tidak ok untuk melanjutkan" fi
Di bawah ini adalah contoh untuk operator logika OR di mana variabel X dievaluasi benar dan variabel Y dievaluasi menjadi menjadi false.
$ X=10$ Y=15
$ if [[ $X -eq 10 || $Y -eq 10 ]] lalu echo "ok untuk melanjutkan" else echo "Tidak ok untuk melanjutkan" fi
Compact conditional statement
Jika Anda hanya perlu menulis pernyataan if dan else maka Anda dapat menggunakan cara singkat. Singkatnya, tidak perlu menggunakan kata kunci if..then..else..fi. Anda dapat menggunakan operator logika AND (&&) dan logika OR (||).
[[ kondisi ]] && > || >
Perhatikan contoh di bawah ini. Saya mencoba memeriksa apakah paket neofetch tersedia dan jika tidak tersedia coba instal.
$ which neofetch && echo "Neofetch sudah terpasang" || sudo apt install neofetch -y
Explanation:
It akan menjalankan perintah “which neofetch” dan jika kode yang dikembalikan nol maka apa pun yang muncul setelah && operator akan berjalan.Jika kode kembali di atas nol (dinilai menjadi salah), apa pun yang muncul setelahnya || operator akan dijalankan. Ini mirip dengan pernyataan if dan else. Pernyataan “Jika” hanya akan berjalan jika kondisi dievaluasi benar. Dalam hal ini, ini adalah operator AND. Demikian pula, klausa else hanya akan berjalan ketika kondisi “jika” dievaluasi menjadi salah. Dalam hal ini, ini adalah operator ATAU. Di mesin saya, neofetch sudah diinstal, jadi kode keluarnya akan menjadi nol. Ini akan menjalankan perintah echo. Jika neofetch tidak diinstal, ia akan menjalankan perintah apt install.
Di bawah ini adalah contoh lain di mana saya menggunakan operator tes file untuk memeriksa apakah suatu file nol byte atau tidak.
$ [[ -s ~/.bashrc ]] && echo "Bukan file kosong" || echo "File kosong"
String operator perbandingan
Seperti operator pengujian Integer dan File, kami memiliki seperangkat operator untuk bekerja dengan string. Di bawah ini adalah kumpulan penting dari operator string.
-z => Periksa apakah string NULL. -n => Periksa apakah string tidak NULL. == => Periksa kesetaraan string. != => Periksa ketidaksetaraan string.
Untuk memeriksa apakah string NULL atau bukan NULL, gunakan flag -z dan -n. Saya menggunakan sintaks pernyataan bersyarat yang ringkas untuk mengevaluasi condition.
$ [[ -z "Howdy" ]] && echo "String is NULL" || echo "String bukan NULL"
$ [[ -n “Howdy” ]] && echo “String bukan NULL” || echo “String is NULL”
Untuk memeriksa apakah dua string sama, gunakan operator ==. String peka huruf besar/kecil, jadi Anda harus menjalankan perbandingan dengan mengingat hal ini.
$ X="Linux"
$ Y="Linux"
$ [[ $X == $Y ]] && echo "Equal" | | echo "Not equal"
Untuk memeriksa apakah dua string tidak sama, gunakan != operator.
$ [[ $X != $Y ]] && echo “Not Equal” || echo “Equal”
Conclusion
Dalam artikel ini, kita telah melihat bagaimana bekerja dengan pernyataan bersyarat di bash. Kita juga telah melihat cara menggunakan operator file test, integer, dan string. Akhirnya, kami membahas bagaimana menulis pernyataan kondisional kompak menggunakan operator logika AND dan logika OR dengan contoh.
Untuk umpan balik atau saran, silakan gunakan bagian komentar dan kami akan dengan senang hati mengembalikannya.
Bash scripting guides:
Bash Scripting – String ManipulationBash Scripting – Perintah Printf Dijelaskan Dengan ContohBash Scripting – Array Terindeks Dijelaskan Dengan ContohBash Scripting – Array Asosiatif Dijelaskan Dengan ContohBash Scripting – Untuk Penjelasan Loop Dengan ContohBash Scripting – Sementara Dan Sampai Penjelasan Perulangan Dengan ContohPengalihan Bash Dijelaskan Dengan ContohBash Scripting – Variabel Dijelaskan Dengan ContohBash Scripting – Fungsi Dijelaskan Dengan ContohBash Perintah Gema Dijelaskan Dengan Contoh Di LinuxBash Tutorial Heredoc Untuk Pemula