GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Membandingkan String di Bash

Saat menulis skrip Bash, Anda sering perlu membandingkan dua string untuk memeriksa apakah keduanya sama atau tidak. Dua string adalah sama jika memiliki panjang yang sama dan memiliki urutan karakter yang sama.

Tutorial ini menjelaskan cara membandingkan string di Bash.

Operator Perbandingan #

Operator perbandingan adalah operator yang membandingkan nilai dan mengembalikan nilai benar atau salah. Saat membandingkan string di Bash, Anda dapat menggunakan operator berikut:

  • string1 = string2 dan string1 == string2 - Operator kesetaraan mengembalikan nilai true jika operan sama.
    • Gunakan = operator dengan test [ perintah.
    • Gunakan == operator dengan [[] perintah untuk pencocokan pola.
  • string1 != string2 - Operator ketidaksetaraan mengembalikan nilai true jika operan tidak sama.
  • string1 =~ regex - Operator regex mengembalikan nilai true jika operan kiri cocok dengan ekspresi reguler yang diperluas di sebelah kanan.
  • string1 > string2 - Operator lebih besar dari mengembalikan nilai true jika operan kiri lebih besar dari kanan diurutkan menurut urutan leksikografis (abjad).
  • string1 < string2 - Operator kurang dari mengembalikan nilai true jika operan kanan lebih besar dari kanan diurutkan menurut urutan leksikografis (abjad).
  • -z string - Benar jika panjang string adalah nol.
  • -n string - Benar jika panjang string bukan nol.

Berikut adalah beberapa poin yang perlu diperhatikan saat membandingkan string:

  • Sebuah ruang kosong harus digunakan antara operator biner dan operan.
  • Selalu gunakan tanda kutip ganda di sekitar nama variabel untuk menghindari masalah pemisahan kata atau globbing.
  • Bash tidak memisahkan variabel berdasarkan "tipe", variabel diperlakukan sebagai integer atau string tergantung pada konteksnya.

Periksa apakah Dua String Sama #

Dalam kebanyakan kasus, saat membandingkan string, Anda ingin memeriksa apakah string tersebut sama atau tidak.

Skrip berikut menggunakan pernyataan if dan pengujian [ perintah untuk memeriksa apakah string sama atau tidak dengan = operator:

#!/bin/bash

VAR1="Linuxize"
VAR2="Linuxize"

if [ "$VAR1" = "$VAR2" ]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi

Saat skrip dijalankan, skrip akan mencetak output berikut.

Strings are equal.

Berikut adalah skrip lain yang mengambil input dari pengguna dan membandingkan string yang diberikan. Dalam contoh ini, kita akan menggunakan [[] perintah dan == operator.

#!/bin/bash

read -p "Enter first string: " VAR1
read -p "Enter second string: " VAR2

if [[ "$VAR1" == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi

Jalankan skrip dan masukkan string saat diminta:

Enter first string: Linuxize
Enter second string: Ubuntu
Strings are not equal.

Anda juga dapat menggunakan logika dan && dan atau || untuk membandingkan string:

[[ "string1" == "string2" ]] && echo "Equal" || echo "Not equal"
Not equal

Periksa apakah sebuah String Berisi Substring #

Ada beberapa cara untuk memeriksa apakah string berisi substring.

Salah satu pendekatan adalah dengan menggunakan mengelilingi substring dengan simbol asterisk * yang artinya cocok dengan semua karakter.

#!/bin/bash

VAR='GNU/Linux is an operating system'
if [[ $VAR == *"Linux"* ]]; then
  echo "It's there."
fi

Script akan menggemakan berikut:

It's there.

Pilihan lain adalah menggunakan operator regex =~ seperti yang ditunjukkan di bawah ini:

#!/bin/bash

VAR='GNU/Linux is an operating system'
if [[ $VAR =~ .*Linux.* ]]; then
  echo "It's there."
fi

Titik yang diikuti dengan tanda bintang .* cocok dengan nol atau lebih kemunculan karakter apa pun kecuali karakter baris baru.

Periksa apakah String Kosong #

Cukup sering Anda juga perlu memeriksa apakah suatu variabel adalah string kosong atau tidak. Anda dapat melakukannya dengan menggunakan -n dan -z operator.

#!/bin/bash

VAR=''
if [[ -z $VAR ]]; then
  echo "String is empty."
fi
String is empty.
#!/bin/bash

VAR='Linuxize'
if [[ -n $VAR ]]; then
  echo "String is not empty."
fi
String is not empty.

Membandingkan String dengan Operator Kasus #

Alih-alih menggunakan operator pengujian, Anda juga dapat menggunakan pernyataan kasus untuk membandingkan string:

#!/bin/bash

VAR="Arch Linux"

case $VAR in

  "Arch Linux")
    echo -n "Linuxize matched"
    ;;

  Fedora | CentOS)
    echo -n "Red Hat"
    ;;
esac
Linuxize matched.

Perbandingan Leksikografis #

Perbandingan leksikografis adalah operasi di mana dua string dibandingkan menurut abjad dengan membandingkan karakter dalam string secara berurutan dari kiri ke kanan. Perbandingan seperti ini jarang digunakan.

Skrip berikut membandingkan dua string secara leksikografis:

#!/bin/bash

VAR1="Linuxize"
VAR2="Ubuntu"

if [[ "$VAR1" > "$VAR2" ]]; then
    echo "${VAR1} is lexicographically greater then ${VAR2}."
elif [[ "$VAR1" < "$VAR2" ]]; then
    echo "${VAR2} is lexicographically greater than ${VAR1}."
else
    echo "Strings are equal"
fi

Script akan menampilkan sebagai berikut:

Ubuntu is lexicographically greater than Linuxize.

Kesimpulan #

Membandingkan string adalah salah satu operasi paling dasar dan sering digunakan dalam skrip Bash. Setelah membaca tutorial ini, Anda harus memiliki pemahaman yang baik tentang bagaimana membandingkan string di Bash. Anda juga dapat memeriksa panduan kami tentang penggabungan string.

Jika Anda memiliki pertanyaan atau masukan, jangan ragu untuk memberikan komentar.


Linux
  1. Cara menggunakan perintah riwayat Bash

  2. Bagaimana Cara Mempersingkat Bash Prompt di Linux?

  3. Bagaimana Mengevaluasi String sebagai Angka di Bash

  1. Cara menulis loop di Bash

  2. Cara Menggabungkan String di Bash

  3. Bash - Cara mencetak string multi baris (dengan '\n') menggunakan printf

  1. Bagaimana Membandingkan Angka dan String di Linux Shell Script

  2. Bagaimana Cara Men-debug Skrip Bash?

  3. Bagaimana Cara Mendeteksi Bash>=4.0?