Tutorial ini akan memandu Anda melalui dasar-dasar Bash if
Pernyataan dan tunjukkan cara menggunakannya di skrip shell Anda.
Pengambilan keputusan adalah salah satu konsep paling mendasar dari pemrograman komputer. Seperti dalam bahasa pemrograman lainnya, if
, if..else
, if..elif..else
, dan if
. bersarang pernyataan di Bash digunakan untuk mengeksekusi kode berdasarkan kondisi tertentu.
if
Pernyataan #
Bash if
conditional dapat memiliki bentuk yang berbeda. if
yang paling dasar pernyataan mengambil bentuk berikut:
if TEST-COMMAND
then
STATEMENTS
fi
if
pernyataan dimulai dengan if
kata kunci diikuti oleh ekspresi kondisional dan then
kata kunci. Pernyataan diakhiri dengan fi
kata kunci.
Jika TEST-COMMAND
mengevaluasi ke True
, STATEMENTS
akan dieksekusi. Jika TEST-COMMAND
mengembalikan False
, tidak ada yang terjadi; STATEMENTS
diabaikan.
Secara umum, merupakan praktik yang baik untuk selalu membuat indentasi kode Anda dan memisahkan blok kode dengan baris kosong. Kebanyakan orang memilih untuk menggunakan lekukan 4-spasi atau 2-spasi. Lekukan dan baris kosong membuat kode Anda lebih mudah dibaca dan terorganisir.
Mari kita lihat contoh skrip berikut yang memeriksa apakah angka yang diberikan lebih besar dari 10:
#!/bin/bash
echo -n "Enter a number: "
read VAR
if [[ $VAR -gt 10 ]]
then
echo "The variable is greater than 10."
fi
Simpan kode dalam file dan jalankan dari baris perintah:
bash test.sh
Script akan meminta Anda untuk memasukkan nomor. Jika, misalnya, Anda memasukkan 15, test
perintah akan mengevaluasi ke true
karena 15 lebih besar dari 10, dan echo
perintah di dalam then
klausa akan dieksekusi.
The variable is greater than 10.
if..else
Pernyataan #
Bash if..else
pernyataan mengambil bentuk berikut:
if TEST-COMMAND
then
STATEMENTS1
else
STATEMENTS2
fi
Jika TEST-COMMAND
mengevaluasi ke True
, STATEMENTS1
akan dieksekusi. Jika tidak, jika TEST-COMMAND
mengembalikan False
, STATEMENTS2
akan dieksekusi. Anda hanya dapat memiliki satu else
klausa dalam pernyataan.
Mari tambahkan else
klausa ke skrip contoh sebelumnya:
#!/bin/bash
echo -n "Enter a number: "
read VAR
if [[ $VAR -gt 10 ]]
then
echo "The variable is greater than 10."
else
echo "The variable is equal or less than 10."
fi
Jika Anda menjalankan kode dan memasukkan angka, skrip akan mencetak pesan yang berbeda berdasarkan apakah angkanya lebih besar atau lebih kecil/sama dengan 10.
if..elif..else
Pernyataan #
Bash if..elif..else
pernyataan mengambil bentuk berikut:
if TEST-COMMAND1
then
STATEMENTS1
elif TEST-COMMAND2
then
STATEMENTS2
else
STATEMENTS3
fi
Jika TEST-COMMAND1
mengevaluasi ke True
, STATEMENTS1
akan dieksekusi. Jika TEST-COMMAND2
mengevaluasi ke True
, STATEMENTS2
akan dieksekusi. Jika tidak ada perintah pengujian yang mengevaluasi ke True
, STATEMENTS2
dijalankan.
Anda dapat memiliki satu atau lebih elif
klausa dalam pernyataan. else
klausa adalah opsional.
Kondisi dievaluasi secara berurutan. Setelah kondisi mengembalikan True
, kondisi yang tersisa tidak dilakukan, dan kontrol program berpindah ke akhir if
pernyataan.
Mari tambahkan elif
klausa ke skrip sebelumnya:
#!/bin/bash
echo -n "Enter a number: "
read VAR
if [[ $VAR -gt 10 ]]
then
echo "The variable is greater than 10."
elif [[ $VAR -eq 10 ]]
then
echo "The variable is equal to 10."
else
echo "The variable is less than 10."
fi
Bersarang if
Pernyataan #
Bash memungkinkan Anda untuk membuat sarang if
pernyataan dalam if
pernyataan. Anda dapat menempatkan beberapa if
pernyataan di dalam if
another yang lain pernyataan.
Skrip berikut akan meminta Anda untuk memasukkan tiga angka dan mencetak angka terbesar di antara ketiga angka tersebut.
#!/bin/bash
echo -n "Enter the first number: "
read VAR1
echo -n "Enter the second number: "
read VAR2
echo -n "Enter the third number: "
read VAR3
if [[ $VAR1 -ge $VAR2 ]]
then
if [[ $VAR1 -ge $VAR3 ]]
then
echo "$VAR1 is the largest number."
else
echo "$VAR3 is the largest number."
fi
else
if [[ $VAR2 -ge $VAR3 ]]
then
echo "$VAR2 is the largest number."
else
echo "$VAR3 is the largest number."
fi
fi
Berikut adalah bagaimana output akan terlihat seperti:
Enter the first number: 4
Enter the second number: 7
Enter the third number: 2
7 is the largest number.
Secara umum, lebih efisien menggunakan case
pernyataan alih-alih if
. bersarang pernyataan. Beberapa Kondisi #
Logika OR
dan AND
operator memungkinkan Anda untuk menggunakan beberapa kondisi di if
pernyataan.
Berikut adalah versi lain dari skrip untuk mencetak angka terbesar di antara ketiga angka tersebut. Dalam versi ini, alih-alih if
. bersarang pernyataan, kami menggunakan logika AND
(&&
) operator.
#!/bin/bash
echo -n "Enter the first number: "
read VAR1
echo -n "Enter the second number: "
read VAR2
echo -n "Enter the third number: "
read VAR3
if [[ $VAR1 -ge $VAR2 ]] && [[ $VAR1 -ge $VAR3 ]]
then
echo "$VAR1 is the largest number."
elif [[ $VAR2 -ge $VAR1 ]] && [[ $VAR2 -ge $VAR3 ]]
then
echo "$VAR2 is the largest number."
else
echo "$VAR3 is the largest number."
fi
Operator Uji #
Di Bash, test
perintah mengambil salah satu bentuk sintaks berikut:
test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]
Untuk membuat skrip portabel, lebih suka menggunakan [
test pengujian lama] perintah, yang tersedia di semua shell POSIX. Versi baru dari test
perintah [[
(tanda kurung ganda) didukung di sebagian besar sistem modern yang menggunakan Bash, Zsh, dan Ksh sebagai shell default.
Untuk meniadakan ekspresi pengujian, gunakan logika NOT
(!
) operator. Saat membandingkan string, selalu gunakan tanda kutip tunggal atau ganda untuk menghindari masalah pemisahan kata dan globbing.
Di bawah ini adalah beberapa operator yang paling umum digunakan:
-n
VAR
- Benar jika panjangVAR
lebih besar dari nol.-z
VAR
- Benar jikaVAR
kosong.STRING1 = STRING2
- Benar jikaSTRING1
danSTRING2
setara.STRING1 != STRING2
- Benar jikaSTRING1
danSTRING2
tidak sama.INTEGER1 -eq INTEGER2
- Benar jikaINTEGER1
danINTEGER2
setara.INTEGER1 -gt INTEGER2
- Benar jikaINTEGER1
lebih besar dariINTEGER2
.INTEGER1 -lt INTEGER2
- Benar jikaINTEGER1
kurang dariINTEGER2
.INTEGER1 -ge INTEGER2
- Benar jikaINTEGER1
sama atau lebih besar dari INTEGER2.INTEGER1 -le INTEGER2
- Benar jikaINTEGER1
sama atau lebih kecil dariINTEGER2
.-h
FILE
- Benar jikaFILE
ada dan merupakan tautan simbolis.-r
FILE
- Benar jikaFILE
ada dan dapat dibaca.-w
FILE
- Benar jikaFILE
ada dan dapat ditulis.-x
FILE
- Benar jikaFILE
ada dan dapat dieksekusi.-d
FILE
- Benar jikaFILE
ada dan merupakan direktori.-e
FILE
- Benar jikaFILE
ada dan merupakan file, apa pun jenisnya (node, direktori, soket, dll.).-f
FILE
- Benar jikaFILE
adadan adalah file biasa (bukan direktori atau perangkat).
Kesimpulan #
if
, if..else
dan if..elif..else
pernyataan memungkinkan Anda untuk mengontrol aliran eksekusi skrip Bash dengan mengevaluasi kondisi yang diberikan.
Jika Anda memiliki pertanyaan atau masukan, jangan ragu untuk memberikan komentar.