Artikel ini membahas dasar-dasar skrip shell Bash dan menjelaskan konstruksi logis yang paling banyak digunakan termasuk jika tunggal pernyataan, jika-lain pernyataan, dan elif penyataan. Selain itu, kami akan membahas cara yang benar untuk membandingkan string dan angka. Tingkatkan pengalaman shell Linux Anda dalam 5 menit!
Kapan pun Anda seorang administrator sistem berpengalaman atau pengguna Linux pemula, ada baiknya mengetahui dasar-dasar skrip shell. Keterampilan ini memberi Anda kemampuan untuk mengotomatiskan tugas yang dapat diulang dalam satu atau beberapa server. Biasanya, tugas tersebut mencakup penginstalan perangkat lunak dan konfigurasi layanan sistem apa pun.
Pernyataan if
jika pernyataan berfungsi sebagai inti mendasar untuk semua bahasa pemrograman. Pernyataan ini membantu menerapkan logika pengambilan keputusan dalam program atau skrip Anda. Itulah mengapa penting untuk memahami cara menggunakan berbagai jika pernyataan.
Berikut sintaks dasarnya:
if [ condition ]
then
COMMANDS
fi
Dimana:
- kondisi – adalah operator logika dari jika pernyataan.
- PERINTAH – perintah, yang dijalankan saat kondisinya true .
- jika, maka, fi – adalah kata kunci sintaks.
Berikut daftar operator kondisi pengujian yang paling sering digunakan:
Operator | Deskripsi |
---|---|
! EKSPRESI | EKSPRESI salah. |
-n STRING | Panjang STRING lebih besar dari nol.Teks |
-z STRING | Panjang STRING adalah nol (STRING kosong) |
STRING1 =STRING2 | STRING1 sama dengan STRING2 |
STRING1 !=STRING2 | STRING1 tidak sama dengan STRING2 |
INTEGER1 -eq INTEGER2 | INTEGER1 secara numerik sama dengan INTEGER2 |
INTEGER1 -gt INTEGER2 | INTEGER1 secara numerik lebih besar dari INTEGER2 |
INTEGER1 -lt INTEGER2 | INTEGER1 secara numerik kurang dari INTEGER2 |
-e FILE | FILE ada |
-d FILE | FILE ada dan itu adalah direktori |
-s FILE | FILE ada dan ukurannya lebih besar dari nol (FILE tidak kosong. |
-w FILE | FILE ada dan izin menulis diberikan. |
-x FILE | FILE ada dan izin eksekusi diberikan. |
-r FILE | FILE ada dan izin baca diberikan. |
Hal yang paling menarik adalah selama eksekusi skrip Bash, semua yang ada di [ ] lolos ke pengujian utilitas, yang mengembalikan true atau salah . Jadi, jika Anda lupa sintaks operator, gunakan saja halaman manualnya:
man test
Mari kita lihat jika yang paling sederhana contoh pernyataan:
#!/bin/bash
var=2
if [ $var -eq 2 ]
then
echo "var equals 2"
fi
Hasil yang diharapkan:
var equals 2
Pada contoh di atas, kita menetapkan variabel var nilai ke 2 , lalu kami menguji apakah var nilai sama dengan (-eq ) 2 dan mencetak pesan tersebut.
Dalam kehidupan nyata, kami biasanya menggunakan jika pernyataan dalam kombinasi dengan konstruksi perulangan Bash (untuk-loop, while-loop, hingga-loop). Berikut ini contoh penggunaan jika pernyataan dengan untuk -loop:
#!/bin/bash
for var in 1 2 3 4 5
do
if [ $var -eq 3 ]
then
echo "Value 3 found"
break
fi
echo var=$var
done
Hasil yang diharapkan:
var=1
var=2
Value 3 found
Dalam contoh ini, kita menelusuri daftar angka dari 1 ke 5 di untuk -loop dan mencetak nilai variabel, yang baru saja kita proses. Saat nilai 3 ditemukan, kami menghentikan eksekusi skrip.
Selain contoh di atas, Anda dapat menggunakan hasil perhitungan matematis dalam jika pernyataan:
#!/bin/bash
for var in {1..10}
do
if (( $var % 2 == 0 ))
then
echo "$var is even number"
fi
done
Pada contoh di atas, kami memeriksa bilangan genap dalam rentang antara 1 dan 10 .
Hasil yang diharapkan:
2 is even number
4 is even number
6 is even number
8 is even number
10 is even number
Sekarang, Anda dapat memeriksa keluaran perintah Bash atau hasil eksekusi. Mari coba periksa apakah pengguna ada di /etc/passwd berkas.
#!/bin/bash
user='root'
check_result=$( grep -ic "^$user" /etc/passwd )
if [ $check_result -eq 1 ]
then
echo "$user user found"
fi
Pada contoh di atas kami menggunakan grep perintah untuk menelusuri /etc/passwd berkas:
grep -ic "^$user" /etc/passwd
Dimana:
- -i – pencarian peka huruf besar/kecil.
- -c – mengembalikan jumlah baris yang ditemukan (0 – tidak ada yang ditemukan; 1 atau lebih ketika sesuatu ditemukan).
- “^$pengguna” – cari string yang dimulai (^ ) dari nilai $user variabel.
Segala sesuatu yang lain dalam contoh harus jelas.
Hasil yang diharapkan:
root user found
Selanjutnya, mari kita periksa bahwa /etc/passwd file ada:
#!/bin/bash
file='/etc/passwd'
if [ -s $file ]
then
echo "$file file found"
fi
Hasil yang diharapkan:
/etc/passwd file found
Pernyataan if-else
Setelah terbiasa dengan jika dasar pernyataan, mari kita lihat cara menggunakan Bash if-else pernyataan.
Berikut sintaks umumnya:
if [ condition ]
then
TRUE_COMMANDS
else
FALSE_COMMANDS
fi
Dimana:
- kondisi – adalah operator logika dari jika pernyataan.
- TRUE_COMMANDS – perintah, yang dijalankan jika kondisinya benar.
- FALSE_COMMANDS – perintah, yang dijalankan jika kondisinya salah.
- jika, maka, jika tidak, fi – adalah kata kunci sintaks.
Untuk mendemonstrasikan cara kerjanya, mari kita ubah satu contoh, di mana kita mendeteksi angka genap. Sekarang, mari kita cetak mana bilangan genap dan ganjil:
#!/bin/bash
for var in {1..10}
do
if (( $var % 2 == 0 ))
then
echo "$var is even number"
else
echo "$var is odd number"
fi
done
Inilah hasil yang diharapkan:
1 is odd number
2 is even number
3 is odd number
4 is even number
5 is odd number
6 is even number
7 is odd number
8 is even number
9 is odd number
10 is even number
Pernyataan Elif
Sekarang, bagaimana jika kita perlu memeriksa beberapa kondisi berbeda selama eksekusi skrip kita? Itu juga dimungkinkan menggunakan pernyataan elif, yang merupakan jalan pintas dari “else if ”.
Begini tampilan sintaksnya:
if [ condition_1 ]
then
CONDITION_1_COMMANDS
elif [ condition_2 ]
then
CONDITION_2_COMMANDS
else
ALL_OTHER_COMMANDS
fi
Dimana:
- kondisi_1 – adalah kondisi logis untuk mengeksekusi CONDITION_1_COMMANDS .
- CONDITION_1_COMMANDS – perintah, yang dijalankan jika kondisi_1 apakah benar .
- CONDITION_2_COMMANDS – perintah, yang dijalankan jika kondisi_2 apakah benar .
- SEMUA_OTHER_PERINTAH – perintah, yang dijalankan saat condition_1 dan kondisi_2 adalah salah .
- jika, maka, elif, yang lain, fi – adalah kata kunci sintaks.
Mari kita lihat contoh berikut:
#/bin/bash
time=8
if [ $time -lt 10 ]
then
echo "Good morning"
elif [ $time -lt 20 ]
then
echo "Good day"
else
echo "Good evening"
fi
Dalam contoh ini, kami menyiapkan waktu variabel ke 8 AM dan mencetak pesan berdasarkan nilai waktu.
Hasil yang diharapkan:
Good morning
Pernyataan if bersarang
Sekarang, ketika kita terbiasa dengan dasar-dasarnya, kita dapat menyelesaikan topik ini dengan mempelajari cara menyusun pernyataan if.
Ini contohnya:
#/bin/bash
value=5
if [ $value -lt 10 ]
then
if [ $value -eq 5 ]
then
echo "Value equals 5"
else
echo "Value not equals 5"
fi
else
echo "value is greater than 10"
fi
Inilah hasil yang diharapkan:
Value equals 5
Operator Boolean
Mungkin berguna untuk memeriksa beberapa ketentuan dalam satu jika penyataan. Anda dapat melakukannya dengan menggunakan operator boolean berikut:
- && – logika DAN.
- || – logis ATAU.
Berikut ini contoh singkatnya:
#!/bin/bash
username="andrei"
birthday="12/16"
today=$( date +"%m/%d")
if [ $USER = $username ] && [ $today = $birthday ]
then
echo "Happy birthday\!"
fi
Dalam contoh sederhana ini, kami memeriksa dua kondisi agar benar:
- Nama pengguna dari pengguna yang masuk harus sama dengan andrei.
- Tanggal hari ini seharusnya 16 Desember.
Jika kedua kondisi benar, kami mencetak “‘Selamat ulang tahun!”
Pernyataan kasus
Dalam beberapa situasi Anda mungkin perlu memiliki lebih dari 3 pernyataan elif untuk memeriksa skrip Anda. Dalam hal ini menggunakan pernyataan elif menjadi rumit. Bash memberi Anda cara yang lebih baik untuk menangani situasi seperti itu dengan menggunakan kasus pernyataan.
Berikut sintaksnya:
case VARIABLE in
VALUE_1)
COMMANDS_FOR_VALUE_1
;;
VALUE_2)
COMMANDS_FOR_VALUE_2
;;
*)
DEFAULT_COMMANDS
;;
esac
Dimana:
- VARIABEL – variabel yang nilainya akan dibandingkan dengan VALUE_1 atau VALUE_2 .
- COMMANDS_FOR_VALUE_1 – perintah untuk dijalankan saat VARIABEL nilai sama dengan VALUE_1 .
- COMMANDS_FOR_VALUE_2 – perintah untuk dijalankan saat VARIABEL nilai sama dengan VALUE_2 .
- DEFAULT_COMMANDS – perintah untuk dijalankan saat VARIABEL nilainya tidak sama dengan salah satu kondisi teratas.
- kasus , di , esac – kata kunci sintaks.
Inilah pola yang sangat umum untuk memproses input ke skrip dan memulai, menghentikan, atau memulai ulang layanan berdasarkan pengguna masukan:
#!/bin/bash
case $1 in
start)
echo "Starting the service"
;;
stop)
echo "Stopping the service"
;;
restart)
echo "Restarting the service"
;;
*)
echo "Unknown action"
;;
esac
Dalam contoh ini, kami memeriksa nilai $1 khusus variabel bash. Ini berisi argumen pertama, disediakan untuk skrip. Misalnya, jika Anda menyimpan contoh di atas dalam file service.sh dan jalankan seperti ini:
bash service.sh start
$1 akan berisi kata "mulai" sebagai nilainya.
Sisanya ditangani oleh logika pernyataan kasus.
Ringkasan
Dalam artikel ini kami membahas dasar-dasar skrip shell Bash dan menjelaskan konstruksi logis yang paling banyak digunakan termasuk jika tunggal pernyataan, jika-lain pernyataan, dan elif pernyataan.
Kami harap Anda menemukan artikel ini bermanfaat. Jika ya, tolong, tolong, bantu kami menyebarkannya ke seluruh dunia!