Membandingkan string adalah tugas umum saat bekerja dengan skrip shell, input pengguna, atau data string. Di shell, Anda mungkin perlu memeriksa apakah ada nilai di string lain, menemukan apakah dua string memiliki panjang yang sama, menguji awal atau akhir kata, atau jenis perbandingan lainnya. Alat Unix standar tidak menyediakan banyak pilihan untuk membandingkan string; perbandingan leksikal tradisional (seperti memeriksa apakah dua kata memiliki panjang yang sama dan membandingkan setiap karakter satu per satu) sulit diterapkan secara efisien dalam kode dan tidak begitu berharga untuk bahasa dinamis seperti Bash.
Artikel ini menjelaskan berbagai cara untuk membandingkan string di Bash dan beberapa perintah terkait. Operator Perbandingan
String
Kita dapat menggunakan operator perbandingan dengan pernyataan bash if untuk membandingkan dua string. Berikut adalah daftar operator perbandingan untuk bekerja dengan string di bash shell.
OperatorDetailsstring1 == string2Mengembalikan nilai true jika kedua string sama.string1 != stringMengembalikan nilai true jika kedua string tidak sama.string =~ regexCompare string1 dengan ekspresi reguler dan mengembalikan nilai true match-z stringReturn true jika panjang string yang diberikan adalah nol (0)-n stringReturn true jika panjang string yang diberikan bukan zero
Sekarang, kita akan membahas operator perbandingan di atas satu per satu dengan contoh.
Compare Two Strings in Bash (==)
Jika Anda perlu memeriksa apakah dua string sama, gunakan operator ==. Operator ini membandingkan operan kiri dengan operan kanan dan mengembalikan nilai true jika keduanya cocok.
Mari kita pahami dengan sebuah contoh. Dalam skrip Shell, inisialisasi dua variabel dengan string. Kemudian gunakan pernyataan if untuk membandingkan apakah kedua string sama atau tidak menggunakan operator ==.
#!/usr/bin/env /bash STR1="TecAdmin" STR2="TecAdmin" if [ "$STR1" == " $STR2" ] lalu echo "Kedua string sama" else echo "Kedua string tidak sama" fi1234567891011#!/usr/bin/env /bash STR1="TecAdmin"STR2="TecAdmin" if [ "$STR1" == "$STR2" ]then echo "Kedua string sama"else echo "Kedua string tidak sama"fi
Jalankan skrip shell di atas dalam shell bash dan periksa hasilnya.
Output: Kedua string sama
Sekarang, ubah nilai kedua variabel dengan string yang berbeda. Kemudian lagi scriptnya dan lihat hasilnya.
Check Two Strings Not Equal (!=)
Terkadang kita diharuskan untuk mengecek apakah kedua string tersebut tidak sama. Anda dapat menggunakan != operator untuk menguji apakah dua string tidak sama. Mari kita periksa dengan sebuah contoh:
#!/usr/bin/env /bash STR1="TecAdmin" STR2="HelloWorld" ##Periksa apakah kedua string tidak sama jika [ "$STR1" != "$STR2" ] maka echo "Benar, kedua string tidak sama" else echo "Salah, kedua string sama" fi123456789101112#!/usr/bin/env /bash STR1="TecAdmin"STR2="HelloWorld" ##Periksa apakah kedua string tidak samaif [ "$STR1" != "$STR2" ]then echo "Benar, kedua string tidak sama"else echo "Salah, kedua string sama"fi
Jalankan skrip shell di atas di shell bash dan periksa hasilnya.
[ pre class=pretty>Output: Benar, kedua string tidak sama Compare Strings with Regular Expression
Kita juga dapat membandingkan string dengan ekspresi reguler dalam skrip bash. Saat menggunakan perbandingan string dengan ekspresi reguler dengan pernyataan if, Anda harus selalu menyertakan tanda kutip [[ ]]. Contoh di bawah ini akan menunjukkan bantuan Anda untuk memeriksa apakah variabel berisi string yang dimulai dengan string tertentu.
#!/usr/bin/env /bash STR="TecAdmin" if [[ "$STR" =~ ^Tec ] ] lalu echo "Ya, ekspresi reguler cocok dengan " else echo "Ekspresi reguler tidak cocok " fi12345678910#!/usr/bin/env /bash STR="TecAdmin" jika [[ "$STR" =~ ^Tec ]]lalu echo "Ya, ekspresi reguler cocok dengan "else echo "Ekspresi reguler tidak cocok dengan "fi
Output: Ya, ekspresi reguler cocok
Mari kita periksa dengan contoh lain. Dalam skrip ini, kami akan meminta pengguna untuk memasukkan nomor. Kemudian verifikasi apakah nilai input berupa angka atau bukan.
#!/usr/bin/env /bash read -p "Input a number: " VAR ## Periksa apakah nilai input berupa angka jika [[ "$VAR" =~ ^[0-9]+$ ]] lalu echo "Input yang diberikan adalah angka" else echo "Maaf, input bukan angka" fi1234567891011#!/usr/bin/env /bash read -p "Masukkan angka : " VAR ## Periksa apakah nilai input berupa angkaif [[ "$VAR" =~ ^[0-9]+$ ]]then echo "Input yang diberikan adalah angka"else echo "Maaf, input bukan angka "fi
Jalankan skrip bash di atas dan berikan input saat diminta.
First run: Masukkan angka: 12 Input yang diberikan adalah angka
Lagi jalankan skrip ini tetapi kali ini masukkan nilai non-numerik dan lihat result.
Second run: Masukkan angka: 1234a Maaf, input bukan angkaCheck apakah String adalah Empty
Saat mengambil input pengguna dalam skrip shell, penting untuk memeriksa apakah string input tidak kosong . Anda dapat menggunakan -z mengembalikan nilai true jika string kosong.
#!/usr/bin/env /bash read -p "Ketik apa saja: " VAR if [[ -z $VAR ]]; lalu echo "Empty string" else echo "Anda mengetik: ${VAR}" fi123456789#!/usr/bin/env /bash read -p "Ketik apa saja: " VAR if [[ -z $VAR ]]; lalu echo "Empty string"else echo "Anda mengetik: ${VAR}"fi
Execute skrip shell di atas dalam shell bash dan tekan enter saat diminta input pengguna.
Pertama dijalankan: Ketik apa saja: Kosongkan string
Lagi jalankan skrip di atas dan ketik sesuatu saat diminta.
Second run: Ketik apa saja: TecAdmin Anda mengetik: TecAdminConclusion
Dalam tutorial ini, kita telah membahas perbandingan string dalam skrip bash. Anda juga dapat memeriksa apakah string kosong atau tidak. Juga memberikan contoh untuk memeriksa apakah nilai input berupa angka atau bukan.
Referensi tecadmin.com