Android

Bash dizeleri nasıl karşılaştırılır

BASH Environment | Aliases, Functions and Scripts

BASH Environment | Aliases, Functions and Scripts

İçindekiler:

Anonim

Bash komut dosyaları yazarken, eşit olup olmadıklarını kontrol etmek için genellikle iki dizeyi karşılaştırmanız gerekir. İki dizgi aynı uzunlukta olduklarında ve aynı karakter dizisini içerdiklerinde eşittir.

Bu eğiticide Bash'te dizelerin nasıl karşılaştırılacağı açıklanmaktadır.

Karşılaştırma Operatörleri

Karşılaştırma işleçleri, değerleri karşılaştıran ve doğru veya yanlış döndüren işleçlerdir. Bash'teki dizeleri karşılaştırırken aşağıdaki işleçleri kullanabilirsiniz:

  • string1 = string2 ve string1 == string2 - string1 == string2 eşitse eşitlik operatörü true değerini döndürür.
    • = Operatörünü test birlikte kullanın ; then echo "Strings are equal." else echo "Strings are not equal." fi ; then echo "Strings are equal." else echo "Strings are not equal." fi

      Komut dosyası yürütüldüğünde, aşağıdaki çıktıyı yazdırır.

      Strings are equal.

      İşte girdiyi kullanıcıdan alan ve verilen dizeleri karşılaştıran başka bir komut dosyası. Bu örnekte ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

      Komut dosyasını çalıştırın ve istendiğinde dizeleri girin:

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

      Ayrıca mantıksal ve && ve veya || dizeleri karşılaştırmak için:

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

      Not equal

      Bir Dizenin Alt Dize İçermediğini Kontrol Edin

      Dizenin bir alt dize içerip içermediğini kontrol etmenin birden çok yolu vardır.

      Bir yaklaşım, alt dizeyi tüm karakterlerle eşleşecek yıldız işaretleri * ile kullanmaktır.

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

      Komut dosyası aşağıdakileri yansıtır:

      It's there.

      Başka bir seçenek regex operatörü =~ aşağıda gösterildiği gibi kullanmaktır:

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

      Noktadan sonra gelen bir yıldız işareti .* , Yeni satır karakteri dışında herhangi bir karakteri sıfır veya daha fazla tekrarla eşleştirir.

      Bir Dizenin Boş olup olmadığını kontrol edin

      Sıklıkla, bir değişkenin boş bir dize olup olmadığını kontrol etmeniz gerekecektir. Bunu -n ve -z işleçlerini kullanarak yapabilirsiniz.

      #!/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.

      Dizeleri Vaka İşleci ile Karşılaştırma

      Test işleçlerini kullanmak yerine, dizeleri karşılaştırmak için case deyimini de kullanabilirsiniz:

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

      Linuxize matched.

      Sözlükbilimsel Karşılaştırma

      Sözlükbilimsel karşılaştırma, bir dizedeki karakterleri soldan sağa sırayla karşılaştırarak iki dizenin alfabetik olarak karşılaştırıldığı bir işlemdir. Bu tür bir karşılaştırma nadiren kullanılır.

      Aşağıdaki komut dosyaları sözlük dizini olarak iki dizeyi karşılaştırır:

      #!/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

      Komut dosyası aşağıdakileri çıkarır:

      Ubuntu is lexicographically greater than Linuxize.

      Sonuç

      Dize karşılaştırması, Bash betiklemesinde en temel ve sık kullanılan işlemlerden biridir. Bu öğreticiyi okuduktan sonra, Bash'teki dizeleri nasıl karşılaştıracağınızı iyi anlamanız gerekir. Dize birleştirme ile ilgili kılavuzumuzu da kontrol edebilirsiniz.

      bash terminali