Android

Bagaimana untuk membandingkan rentetan dalam bash

Bash vs Python для DevOps инженеров и системных администраторов

Bash vs Python для DevOps инженеров и системных администраторов

Isi kandungan:

Anonim

Apabila menulis skrip Bash, anda sering perlu membandingkan dua rentetan untuk memeriksa sama ada ia sama atau tidak. Dua rentetan sama apabila mereka mempunyai panjang yang sama dan mengandungi urutan aksara yang sama.

Tutorial ini menerangkan cara membandingkan rentetan dalam Bash.

Pengendali Perbandingan

Pengendali perbandingan adalah pengendali yang membandingkan nilai dan mengembalikan benar atau salah. Apabila membandingkan tali dalam Bash, anda boleh menggunakan pengendali berikut:

  • string1 = string2 dan string1 == string2 - Operator kesamaan kembali benar jika operan sama.
    • Gunakan operator = dengan test ; then echo "Strings are equal." else echo "Strings are not equal." fi ; then echo "Strings are equal." else echo "Strings are not equal." fi

      Apabila skrip dilaksanakan, ia akan mencetak output berikut.

      Strings are equal.

      Berikut adalah skrip lain yang mengambil input dari pengguna dan membandingkan rentetan yang diberikan. Dalam contoh ini, kami akan menggunakannya ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

      Jalankan skrip dan masukkan rentetan apabila diminta:

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

      Anda juga boleh menggunakan logik dan && dan atau || untuk membandingkan rentetan:

      ] && echo "Equal" || echo "Not equal"

      Not equal

      Semak jika String Mengandungi Substring

      Terdapat pelbagai cara untuk memeriksa sama ada rentetan mengandungi substring.

      Satu pendekatan adalah dengan menggunakan mengelilingi substring dengan simbol asterisk * yang bermaksud memadankan semua aksara.

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      Skrip akan echo yang berikut:

      It's there.

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

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      Tempoh yang diikuti oleh asterisk .* Sepadan dengan sifar atau lebih banyak kejadian mana-mana watak kecuali watak baru.

      Semak jika String kosong

      Seringkali anda juga perlu menyemak sama ada pemboleh ubah adalah rentetan kosong atau tidak. Anda boleh melakukannya dengan menggunakan operator -n dan -z .

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

      String is empty.

      #!/bin/bash VAR='Linuxize' if]; then echo "String is not empty." fi

      String is not empty.

      Membandingkan Strings dengan Pengendali Kes

      Daripada menggunakan pengendali ujian, anda juga boleh menggunakan pernyataan kes untuk membandingkan rentetan:

      #!/bin/bash VAR="Arch Linux" case $VAR in "Arch Linux") echo -n "Linuxize matched";; Fedora | CentOS) echo -n "Red Hat";; esac

      Linuxize matched.

      Perbandingan Lexicographic

      Perbandingan Lexicographical adalah operasi di mana dua rentetan berbanding abjad dengan membandingkan watak-watak dalam rentetan berturut-turut dari kiri ke kanan. Perbandingan semacam ini jarang digunakan.

      Skrip berikut membandingkan dua rentetan secara leksikografi:

      #!/bin/bash VAR1="Linuxize" VAR2="Ubuntu" if]; then echo "${VAR1} is lexicographically greater then ${VAR2}." elif]; then echo "${VAR2} is lexicographically greater than ${VAR1}." else echo "Strings are equal" fi

      Skrip akan mengeluarkan yang berikut:

      Ubuntu is lexicographically greater than Linuxize.

      Kesimpulannya

      Membandingkan rentetan adalah salah satu operasi yang paling asas dan sering digunakan dalam skrip Bash. Selepas membaca tutorial ini, anda harus mempunyai pemahaman yang baik bagaimana untuk membandingkan rentetan dalam Bash. Anda juga boleh menyemak panduan kami mengenai penyambungan tali.

      terminal bash