Android

Hvordan sammenligne strenger i bash

tr - Transform, Replace and Remove specific characters from strings | #10 Practical Bash

tr - Transform, Replace and Remove specific characters from strings | #10 Practical Bash

Innholdsfortegnelse:

Anonim

Når du skriver Bash-skript, vil du ofte måtte sammenligne to strenger for å sjekke om de er like eller ikke. To strenger er like når de har samme lengde og inneholder samme sekvens med tegn.

Denne veiledningen beskriver hvordan du sammenligner strengene i Bash.

Sammenligningsoperatører

Sammenligningsoperatører er operatører som sammenligner verdier og returnerer sant eller usant. Når du sammenligner strenger i Bash, kan du bruke følgende operatører:

  • string1 = string2 og string1 == string2 - string1 == string2 returnerer sann hvis operandene er like.
    • Bruk = operatøren med 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

      Når skriptet kjøres, vil det skrive ut følgende utdata.

      Strings are equal.

      Her er et annet skript som tar innspillene fra brukeren og sammenligner de gitte strengene. I dette eksemplet vil vi bruke ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

      Kjør skriptet og skriv inn strengene når du blir bedt om det:

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

      Du kan også bruke det logiske og && og eller || å sammenligne strengene:

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

      Not equal

      Sjekk om en streng inneholder en underlagsstreng

      Det er flere måter å sjekke om en streng inneholder en substring.

      En tilnærming er å bruke surround substring med asterisk symboler * som betyr samsvarer med alle tegn.

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

      Skriptet vil gjenskape følgende:

      It's there.

      Et annet alternativ er å bruke regex operator =~ som vist nedenfor:

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

      Perioden etterfulgt av en stjerne .* Samsvarer med null eller flere forekommer et hvilket som helst tegn bortsett fra et nylinjetegn.

      Sjekk om en streng er tom

      Ganske ofte må du også sjekke om en variabel er en tom streng eller ikke. Du kan gjøre dette ved å bruke operatørene -n og -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.

      Sammenligning av strenger med saksoperatøren

      I stedet for å bruke testoperatørene kan du også bruke saksuttalelsen til å sammenligne strenger:

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

      Linuxize matched.

      Leksikografisk sammenligning

      Leksikografisk sammenligning er en operasjon der to strenger sammenlignes alfabetisk ved å sammenligne tegnene i en streng sekvensielt fra venstre mot høyre. Denne typen sammenligning brukes sjelden.

      Følgende skript sammenligner to strenger leksikografisk:

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

      Skriptet vil sende ut følgende:

      Ubuntu is lexicographically greater than Linuxize.

      Konklusjon

      Sammenligning av streng er en av de mest grunnleggende og ofte brukte operasjonene i Bash-scripting. Etter å ha lest denne opplæringen, bør du ha en god forståelse av hvordan du sammenligner strengene i Bash. Du kan også sjekke guiden vår om sammenkobling av streng.

      bash terminal