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:
-nVAR- Benar jika panjangVARlebih besar dari nol.-zVAR- Benar jikaVARkosong.STRING1 = STRING2- Benar jikaSTRING1danSTRING2setara.STRING1 != STRING2- Benar jikaSTRING1danSTRING2tidak sama.INTEGER1 -eq INTEGER2- Benar jikaINTEGER1danINTEGER2setara.INTEGER1 -gt INTEGER2- Benar jikaINTEGER1lebih besar dariINTEGER2.INTEGER1 -lt INTEGER2- Benar jikaINTEGER1kurang dariINTEGER2.INTEGER1 -ge INTEGER2- Benar jikaINTEGER1sama atau lebih besar dari INTEGER2.INTEGER1 -le INTEGER2- Benar jikaINTEGER1sama atau lebih kecil dariINTEGER2.-hFILE- Benar jikaFILEada dan merupakan tautan simbolis.-rFILE- Benar jikaFILEada dan dapat dibaca.-wFILE- Benar jikaFILEada dan dapat ditulis.-xFILE- Benar jikaFILEada dan dapat dieksekusi.-dFILE- Benar jikaFILEada dan merupakan direktori.-eFILE- Benar jikaFILEada dan merupakan file, apa pun jenisnya (node, direktori, soket, dll.).-fFILE- Benar jikaFILEadadan 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.