Pendahuluan
Skrip Bash membantu mengotomatiskan tugas di mesin Anda. if elif else
pernyataan dalam skrip bash memungkinkan pembuatan kasus dan respons bersyarat untuk hasil kode tertentu. if
conditional membantu mengotomatiskan proses pengambilan keputusan selama program.
Artikel ini menjelaskan apa itu if elif else
pernyataan adalah dan menunjukkan sintaks melalui berbagai contoh.
Prasyarat
- Mesin dengan OS Linux.
- Akses ke baris perintah/terminal.
- Akses ke editor teks seperti Vi/Vim.
Apakah Pernyataan Bash if?
Dalam pemrograman, if
pernyataan adalah ekspresi bersyarat. Namun, perintah tersebut diuji di if
pernyataan dievaluasi berdasarkan status keluar . Oleh karena itu:
- Jika perintah selesai berhasil , status keluarnya adalah 0 .
- Jika pernyataan memunculkan kesalahan , status keluar adalah angka antara 1 dan 255 .
Angka nol untuk sukses dan nilai bukan nol untuk kegagalan tampaknya berlawanan dengan intuisi. Di sebagian besar bahasa pemrograman lain, nol mewakili salah, dan satu (atau lebih besar) mewakili benar. Namun, dalam skrip bash, konvensi UNIX mengembalikan status keluar alih-alih nilai kebenaran, dan keduanya tidak boleh dikacaukan.
Uji contoh perintah kesalahan (1 lebih besar dari 100) di terminal dengan menjalankan:
test 1 -gt 100
Periksa status keluar menggunakan perintah echo:
echo $?
Tes mengembalikan kode keluar 1
, menunjukkan ekspresi gagal.
Demikian pula, periksa contoh perintah yang berhasil dievaluasi (1000 lebih besar dari 100) di terminal dengan:
test 1000 -gt 100
Cetak status keluar untuk mengonfirmasi bahwa perintah berhasil:
echo $?
Tes mengembalikan kode keluar 0
, menunjukkan perintah selesai tanpa kesalahan.
Contoh Pernyataan Bash if
Ikuti petunjuk di bawah ini untuk membuat contoh skrip bash menggunakan if
pernyataan.
1. Buka terminal (CTRL +ALT +B ) dan buat skrip contoh untuk menguji bagaimana bash if
pernyataan berfungsi:
vi test_script.sh
2. Dalam skrip, tambahkan baris berikut:
echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if test $VAR -gt 100
then
echo "It's greater than 100"
fi
echo Bye!
Setiap baris dalam skrip melakukan hal berikut:
- Baris 1-3 memberikan instruksi untuk memasukkan nomor melalui konsol. Angka tersebut dibacakan ke dalam variabel yang disebut
VAR
dan dicetak. - Baris 4 memulai
if
pernyataan dan memeriksa status keluar untuk perintah tepat setelah ($VAR -gt 100
). - Baris 5-6 menandakan dimulainya perintah untuk dieksekusi hanya jika pernyataan pada baris 4 berhasil diselesaikan (dengan status keluar 0), artinya kita memasukkan angka yang lebih besar dari 100.
- Baris 7 menandakan akhir dari
if
pernyataan. - Baris 8 berada di luar pernyataan dan berjalan seperti yang diharapkan, terlepas dari
if
hasil.
3. Simpan dan tutup Vim:
:wq
4. Selanjutnya, buat file tersebut dapat dieksekusi:
chmod +x test_script.sh
5. Terakhir, jalankan skrip dengan:
./test_script.sh
Script menampilkan pesan yang berbeda berdasarkan nomor yang dimasukkan. Jalankan skrip beberapa kali dan uji nomor lain untuk mengonfirmasi perilakunya.
Bash jika Sintaks Pernyataan
Sintaks dasar untuk bash if
pernyataannya adalah:
if <commands>
then
<commands>
fi
Setiap kata kunci memiliki fungsi tertentu:
if
menandakan dimulainya pernyataan. Perintah setelahnya adalah perintah di mana pemeriksaan status keluar berlaku.then
menjalankan perintah hanya jika tinjauan sebelumnya berhasil diselesaikan.fi
menutup pernyataan if.
Menyertakan perintah pengujian dalam tanda kurung yang berbeda menghasilkan metode eksekusi yang berbeda untuk if
penyataan. Tabel di bawah ini memberikan deskripsi singkat serta kasus penggunaan untuk setiap jenis braket.
Sintaks | Apa itu | Kapan harus digunakan |
---|---|---|
if ( <commands> ) | Subkulit dieksekusi dalam subproses. | Ketika perintah mempengaruhi shell atau lingkungan saat ini. Perubahan tidak tetap ada saat subkulit selesai. |
if (( <commands> )) | Ekstensi bash. | Gunakan untuk operasi aritmatika dan manipulasi variabel gaya-C. |
if [ <commands> ] | POSIX bawaan, alias untuk test <commands> . | Membandingkan angka dan menguji apakah file ada. |
if [[ <commands> ]] | Ekstensi bash, versi lanjutan dari tanda kurung siku tunggal. | String cocok dengan pola wildcard. |
Di bawah ini adalah contoh skrip bash yang menggunakan setiap jenis braket dengan penjelasan yang lebih mendalam.
Sintaks Tanda Kurung Tunggal
Menggunakan tanda kurung tunggal dalam skrip bash membuat subkulit. Saat digabungkan dengan if
pernyataan, subproses selesai sebelum melanjutkan program. if
menganalisis status keluar dan bertindak sesuai dengan itu.
Bash if
pernyataan dengan sintaks tanda kurung tunggal terlihat seperti berikut:
if ( <commands> )
then
<commands>
fi
Coba contoh di bawah ini untuk melihat bagaimana sub-proses berperilaku bersama dengan if
pernyataan:
1. Buat skrip menggunakan Vim:
vi single_parentheses.sh
2. Tambahkan baris kode berikut ke skrip:
outer_variable=Defined
echo Before if:
echo inner_variable = $inner_variable
echo outer_variable = $outer_variable
if (
echo Inside subshell:
inner_variable=Defined
echo inner_variable = $inner_variable
outer_variable=Changed
echo outer_variable = $outer_variable
)
then
echo After then:
echo inner_variable = $iner_variable
echo outer_variable = $outer_variable
fi
echo After fi:
echo inner_variable = $inner_variable
echo outer_variable = $outer_variable
Program melakukan hal berikut:
- Baris 1 membuat variabel bernama
outer_variable
tempat kita menyimpan stringDefined
. - Baris 2-4 cetak variabel ke konsol. Saat ini,
outer_variable
memiliki string yang tersimpan di dalamnya, sedangkaninner_variable
kosong. - Baris 5 memulai
if
pernyataan dan sub-proses, yang dibatasi oleh tanda kurung tunggal. - Baris 6-11 simpan string di dalam
inner_variable
dan ubahouter_variable
ke string yang berbeda. Kedua nilai dicetak ke konsol, dan sub-proses diakhiri dengan kode keluar. Dalam hal ini, sub-proses berakhir dengan sukses dengan kode keluar0
. - Baris 12-16 jalankan setelah sub-proses dan cetak nilai variabel. Namun, nilainya berubah kembali seperti sebelum
if
penyataan. Sub-proses hanya menyimpan nilai secara lokal dan tidak secara global. - Baris 16-19 jalankan setelah perintah di
then
ayat. Nilai tetap tidak berubah di luar pernyataan.
3. Simpan skrip dan tutup editor:
:wq
4. Jadikan skrip dapat dieksekusi:
chmod +x single_parentheses.sh
5. Terakhir, jalankan contoh untuk menguji hasilnya:
./single_parentheses.sh
Output mencetak status variabel saat program berjalan.
Sintaks Tanda Kurung Ganda
Sintaks kurung ganda untuk bash if
pernyataannya adalah:
if (( <commands> ))
then
<commands>
fi
Konstruksi tanda kurung ganda di bash memungkinkan:
- Evaluasi aritmatika . Mendefinisikan variabel sebagai
a=$(( 1+1 ))
menghitung persamaan dan menetapkana
ke 2. - Manipulasi variabel gaya-C. Misalnya, menambah variabel dengan
(( a++ ))
.
Saat menggunakan sintaks tanda kurung ganda dalam if
pernyataan, evaluasi berperilaku berbeda. Misalkan ekspresi mengevaluasi ke 0
, lalu if
ujian tidak lulus.
Coba contoh berikut untuk melihat cara kerja tanda kurung ganda:
1. Buat skrip bash di terminal:
vi double_parentheses.sh
2. Tambahkan kode berikut ke double_parentheses.sh :
variable=-2
echo Before first if: $variable
if (( variable++ ))
then
echo Incremented ++ style: $variable
fi
echo After first if: $variable
if (( variable=variable+1 ))
then
echo Incremented arithmetically $variable
fi
echo After second if: $variable
Setiap nomor baris dalam skrip melakukan hal berikut:
- Baris 1 mendefinisikan variabel dan menyetel nilainya ke
-2
. - Baris 3-5 menambah nilai C-style di dalam tanda kurung ganda dan memeriksa nilainya. Jika variabelnya bukan nol, if akan mencetak pesan ke konsol.
- Baris 8-10 menambah variabel satu per satu menggunakan notasi aritmatika biasa dan mencetak pesan jika variabel bukan nol.
3. Simpan skrip dan tutup Vim:
:wq
4. Ubah izin skrip menjadi yang dapat dieksekusi:
chmod +x double_parentheses.sh
5. Jalankan script untuk melihat hasilnya:
./double_parentheses.sh
Sintaks Kurung Tunggal
Tanda kurung tunggal adalah nama lain dari test
perintah dan utilitas POSIX standar tersedia untuk semua shell. Sintaks dasarnya adalah:
if [ <commands> ]
then
<commands>
fi
Bash pertama if
contoh yang disediakan dalam tutorial ini (test_script.sh ) bekerja sama baiknya dengan sintaks alternatif:
echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if [ $VAR -gt 100 ]
then
echo "It's greater than 100"
fi
echo Bye!
Jalankan skrip untuk mengonfirmasi bahwa outputnya setara. Untuk dokumentasi lengkap dan detail tentang penggunaan sintaks braket, jalankan perintah man pada test
utilitas:
man test
Sintaks Kurung Ganda
Sintaks kurung ganda di bash if
scripts adalah pilihan terbaik jika portabilitas tidak diperlukan. Kurung ganda lebih unggul daripada kurung tunggal dan mencakup banyak opsi lanjutan. Sintaksnya adalah:
if [[ <commands> ]]
then
<commands>
fi
Coba contoh di bawah ini untuk melihat cara kerja pencocokan string karakter pengganti di if
perintah:
1. Buat file skrip shell bernama double_brackets :
vi double_brackets.sh
2. Tambahkan kode berikut:
if [[ $USER == k* ]]
then
echo Hello $USER
fi
echo Bye!
3. Script memeriksa apakah huruf awal nama pengguna adalah k
dan mengirim pesan halo jika ya. Simpan dan tutup skrip:
:wq
4. Jadikan file tersebut dapat dieksekusi dengan chmod:
chmod +x double_brackets.sh
5. Jalankan program dengan:
./double_brackets.sh
Jenis Pernyataan Bersyarat Bash Lainnya
if
pernyataan hanya melakukan satu pemeriksaan bersyarat. Ubah if
dengan jenis persyaratan bash lainnya untuk membuat penilaian yang kompleks.
jika lain Pernyataan
if else
pernyataan menyediakan satu metode untuk mendefinisikan tindakan yang berbeda berdasarkan output dari kondisi yang diperiksa. Sintaks dasarnya adalah:
if <command>
then
<commands>
else
<commands>
fi
Contoh berikut menunjukkan bagaimana if else
pekerjaan bersyarat:
1. Buat skrip baru menggunakan Vim:
vi if_else.sh
2. Masukkan kode berikut ke dalam skrip:
echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if [ $VAR -gt 100 ]
then
echo "It's greater than 100"
else
echo "It's less than 100"
fi
echo Bye!
Pernyataan memeriksa output perintah di baris 4 dan mencetak pesan deskriptif berdasarkan hasil:
- Jika angka yang dimasukkan lebih besar dari 100 , program memasuki baris 6 dan mencetak pesan.
- Jika jumlahnya kurang dari 100 , pesan di
else
klausa (baris 8 ) mencetak ke konsol.
3. Simpan skrip dan tutup Vim:
:wq
4. Jadikan skrip dapat dieksekusi:
chmod +x if_else.sh
5. Terakhir, jalankan skrip beberapa kali dan uji berbagai nilai:
./if_else.sh
Pernyataan if elif
elif
klausa yang digabungkan dengan if else
pernyataan menciptakan beberapa pemeriksaan bersyarat. if elif
menciptakan serangkaian pemeriksaan dengan hasil yang berbeda. Sintaksnya adalah:
if <command>
then
<commands>
elif <command>
then
<commands>
else
<commands>
fi
Untuk membuat skrip menggunakan elif
:
1. Buat file shell bernama elif :
vi elif.sh
2. Dalam elif.sh file, tambahkan kode contoh berikut:
echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if [ $VAR -gt 100 ]
then
echo "It's greater than 100"
elif [ $VAR -lt 100 ]
then
echo "It's less than 100"
else
echo "It's exactly 100"
fi
echo Bye!
Contoh menambahkan elif
periksa baris 7 untuk melihat apakah angka yang dimasukkan kurang dari 100. Jika pernyataan pada baris 4 dan 7 keduanya gagal, program melompat ke klausa else.
3. Simpan dan tutup file:
:wq
4. Buat elif.sh file yang dapat dieksekusi:
chmod +x elif.sh
5. Jalankan skrip beberapa kali dan periksa perilaku untuk nomor yang berbeda:
./elif.sh
Tambahkan beberapa elif
klausa untuk cabang pernyataan untuk pemeriksaan rinci lebih lanjut. Untuk contoh di mana if
dan elif
seri pola tumbuh, opsi yang lebih baik adalah menggunakan case
pernyataan.
Pernyataan if bersarang
if
. bertingkat pernyataan menambahkan cabang di dalam if
. Secara khusus, ketika sebuah perintah melewati pemeriksaan if pertama, perintah tersebut melewati pemeriksaan baru untuk memfilter hasilnya lebih lanjut. Sintaksnya adalah:
if <commands>
then
if <commands>
then
<commands>
fi
fi
Bersarang if biasanya digunakan untuk mencari melalui array multi-dimensi. Namun, cobalah untuk menghindari lebih dari dua atau tiga if
pernyataan untuk mengurangi kompleksitas program. Pikirkan kembali logika kode saat if
. bersarang terus berkembang secara mendalam.