GNU/Linux >> Belajar Linux >  >> Linux

Bash Scripting – Pernyataan Bersyarat

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 perbedaan sintaksis dan implementasi.

Sintaks pernyataan bersyarat

Blok bangunan pernyataan kondisional di bash adalah sebagai berikut.

jika [[ kondisi ]]maka codeelif [[ kondisi ]]maka codeelse codefi

Penjelasan kode:

  1. Kata kunci "if" dan "fi" menandai awal dan akhir pernyataan kondisional. Setiap pernyataan if harus diikuti oleh "then" kata kunci.
  2. Salah satu [[ ]] atau [ ] harus digunakan untuk mengevaluasi kondisi Jika kondisi dievaluasi menjadi "Benar" , maka blok kode akan dieksekusi.
  3. Pernyataan bersyarat dapat memiliki satu kondisi if dan beberapa elif kondisi. Jika suatu kondisi dievaluasi benar, semua pernyataan kondisional berikutnya akan dilewati.
  4. Jika semua if atau elif blok dievaluasi sebagai salah lalu blok kode dari "else" klausa akan berjalan.
  5. Meskipun tidak ada aturan indentasi yang ketat, sisakan 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.

$ ketik -a tes test adalah shell builtintest adalah /usr/bin/testtest adalah /bin/test

Ada banyak operator yang didukung oleh test perintah 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.

$ tes pria 
$ bantuan tes

Operator pengujian file

Operator pengujian 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 bagian operator file.

$ uji pria

Tidak semua operator sering digunakan, tetapi saya akan memandu Anda melalui yang paling penting.

Untuk memeriksa apakah file tertentu ada atau tidak, gunakan -e bendera. Di sini saya memeriksa apakah .bashrc file ada di direktori home saya atau tidak.

jika [[ -e /home/${USER}/.bashrc ]]maka echo "File ada"else echo "File tidak ada"fi

Untuk memeriksa apakah direktori tertentu ada atau tidak, gunakan -d bendera. Di sini saya memeriksa desktop direktori di folder rumah saya.

jika [[ -d ~/Desktop/ ]]maka echo "Direktori ada"else echo "Direktori tidak ada"fi

Untuk memeriksa apakah file tidak berukuran nol file, gunakan -s bendera. Di sini, saya telah membuat file bernama "zero_byte.txt" dan menambahkan beberapa teks.

$ sentuh ~/Desktop/zero_byte.txt 
$ echo "Menulis sesuatu">> ~/Desktop/zero_byte.txt
$ if [[ -s ~/Desktop/zero_byte.txt ]]kemudian echo "File bukan 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 tidak.

$ jika [[ ! -s ~/Desktop/zero_byte.txt ]]lalu echo "File bukan nol byte"else echo "File nol byte"fi

Operator perbandingan bilangan bulat

Di bawah ini adalah operator perbandingan bilangan bulat yang akan dievaluasi terhadap dua bilangan bulat yang diberikan.

-eq => Integer X sama dengan Integer Y-ne => Bilangan Bulat X tidak sama dengan Bilangan Bulat Y-gt => Integer X lebih besar dari Integer Y-ge => Bilangan Bulat X lebih besar dari atau sama dengan Bilangan Bulat Y-lt => Integer X lebih kecil dari Integer Y-le => Bilangan Bulat X lebih kecil atau sama dengan Bilangan Bulat Y

Setiap perintah bash mengembalikan kode keluar antara 0-255 dan kami akan menggunakan operator perbandingan bilangan bulat untuk mengevaluasi kode keluar. Dalam contoh di bawah ini, saya menetapkan kode keluar dari nvim perintah ke variabel yang disebut EXCODE dan melakukan perbandingan bilangan bulat. Karena neovim tidak tersedia, ia akan membuang kode keluar 127 (perintah tidak ditemukan kesalahan).

$ EXCODE=$(nvim;echo $?)
$ if [[ $EXCODE -eq 0 ]]then echo "nvim is available to use"elif [[ $EXCODE -eq 127 ]]then echo "Perintah tidak ditemukan, periksa apakah nvim sudah terpasang atau tidak"else echo "Kode pengembalian selain 0 &127. Periksa dan perbaiki kesalahan"fi

Dalam contoh di atas, saya telah menggunakan elif pernyataan untuk pernyataan pertama dalam artikel ini. Pertama "if" kondisi dievaluasi untuk memeriksa apakah kode yang dikembalikan adalah nol, yang mengembalikan false, kemudian kontrol diteruskan ke elif pernyataan dan kondisi dievaluasi menjadi benar dan menjalankan blok kode. Anda dapat menambahkan sebanyak elif pernyataan untuk mengevaluasi kondisi yang berbeda.

Anda juga dapat mengevaluasi beberapa kondisi dalam satu if atau elif pernyataan menggunakan operator logika AND, OR.

LOGICAL AND &&simbol => Semua kondisi harus dievaluasi kebenarannya. 
LOGIS ATAU || simbol => Setiap kondisi harus dievaluasi kebenarannya.

Di bawah ini adalah contoh untuk logika DAN operator tempat bilangan bulat disimpan dalam variabel X dan Y dievaluasi sebagai benar .

$ X=10 
$Y=15
$ if [[ $X -eq 10 &&$Y -eq 15 ]]kemudian echo "ok untuk melanjutkan"else echo "Tidak ok untuk melanjutkan"fi

Di bawah ini adalah contoh untuk logika ATAU operator di mana variabel X dievaluasi sebagai benar dan variabel Y dievaluasi sebagai salah .

$ X=10 
$Y=15
$ if [[ $X -eq 10 || $Y -eq 10 ]]lalu echo "ok untuk melanjutkan"else echo "Tidak ok untuk melanjutkan"fi

Pernyataan bersyarat yang ringkas

Jika Anda harus menulis if dan else pernyataan maka Anda dapat menggunakan cara singkat. Singkatnya, tidak perlu menggunakan if..then..else..fi kata kunci. Anda dapat menggunakan logika AND (&& ) dan logika OR (|| ) operator.

[[ kondisi ]] &&<> || <>>pre> 

Lihatlah contoh di bawah ini. Saya mencoba memeriksa apakah paket neofech tersedia dan jika tidak tersedia coba instal.

$ which neofetch &&echo "Neofetch sudah terpasang" || sudo apt install neofetch -y

Penjelasan kode:

  • Ini akan menjalankan "which neofetch" perintah dan jika kode pengembaliannya nol maka apa pun yang muncul setelah && operator akan berjalan.
  • Jika kode yang dikembalikan di atas nol (dinilai salah), apa pun yang muncul setelah || operator akan berjalan.
  • Ini mirip dengan if dan else penyataan. "If" pernyataan akan berjalan hanya jika kondisi dievaluasi benar. Dalam hal ini, ini adalah DAN operator. Demikian pula, klausa else hanya akan berjalan ketika "if" kondisi dinilai salah. Dalam hal ini, adalah ATAU operator.
  • Di mesin saya, neofetch sudah terinstal, jadi kode keluarnya akan menjadi nol. Ini akan menjalankan echo memerintah. Jika neofetch tidak diinstal, itu akan menjalankan apt install perintah.

Di bawah ini adalah contoh lain di mana saya menggunakan operator pengujian file untuk memeriksa apakah suatu file nol byte atau tidak.

$ [[ -s ~/.bashrc ]] &&echo "Bukan file kosong" || echo "File kosong"

Operator perbandingan string

Seperti Bilangan Bulat dan Berkas operator tes, kami memiliki satu set operator untuk bekerja dengan string. Di bawah ini adalah kumpulan operator string yang penting.

-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 -z dan -n bendera. Saya menggunakan sintaks pernyataan bersyarat yang ringkas untuk mengevaluasi kondisinya.

$ [[ -z "Howdy" ]] &&echo "String adalah NULL" || echo "String bukan NULL"
$ [[ -n "Howdy" ]] &&echo "String bukan NULL" || echo "String adalah 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 "Tidak sama"

Untuk memeriksa apakah dua string tidak sama, gunakan != operator.

$ [[ $X !=$Y ]] &&echo "Tidak Sama" || echo "Sama"

Kesimpulan

Dalam artikel ini, kita telah melihat cara 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 membalasnya.

Panduan pembuatan skrip Bash:

  • Skrip Bash – Manipulasi String
  • Bash Scripting – Perintah Printf Dijelaskan Dengan Contoh
  • Bash Scripting – Array Terindeks Dijelaskan Dengan Contoh
  • Bash Scripting – Array Asosiatif Dijelaskan Dengan Contoh
  • Skrip Bash – Untuk Pengulangan Dijelaskan Dengan Contoh
  • Bash Scripting – Sementara Dan Sampai Perulangan Dijelaskan Dengan Contoh
  • Pengalihan Bash Dijelaskan Dengan Contoh
  • Bash Scripting – Variabel Dijelaskan Dengan Contoh
  • Bash Scripting – Fungsi Dijelaskan Dengan Contoh
  • Perintah Bash Echo Dijelaskan Dengan Contoh Di Linux
  • Tutorial Bash Heredoc Untuk Pemula

Linux
  1. Skrip bash(I)

  2. Basa'?

  3. Tidak dapat menjalankan skrip bash bahkan sebagai root?

  1. Cara Memeriksa Apakah File atau Direktori Ada di Bash

  2. Bash:Tulis ke File

  3. Cara Membaca File Baris Demi Baris di Bash

  1. Perintah Sumber Bash

  2. Bash:Tambahkan ke File

  3. Cara menggunakan operator tes file Bash di Linux