Android

Hvordan man sammenligner strenge i bash

Steam Controller

Steam Controller

Indholdsfortegnelse:

Anonim

Når du skriver Bash-scripts, bliver du ofte nødt til at sammenligne to strenge for at kontrollere, om de er ens eller ikke. To strenge er ens, når de har samme længde og indeholder den samme rækkefølge af tegn.

Denne tutorial beskriver, hvordan man sammenligner strenge i Bash.

Sammenligningsoperatører

Sammenligningsoperatører er operatører, der sammenligner værdier og returnerer sandt eller forkert. Når du sammenligner strenge i Bash, kan du bruge følgende operatører:

  • string1 = string2 og string1 == string2 - Ligestillingsoperatøren returnerer sandt, hvis operanderne er lige.
    • Brug = operatoren 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 scriptet udføres, udskrives det følgende output.

      Strings are equal.

      Her er et andet script, der tager input fra brugeren og sammenligner de givne strenge. I dette eksempel vil vi bruge ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

      Kør scriptet, og indtast strengene, når du bliver bedt om det:

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

      Du kan også bruge det logiske og && og eller || at sammenligne strenge:

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

      Not equal

      Kontroller, om en streng indeholder en underlag

      Der er flere måder at kontrollere, om en streng indeholder en substring.

      Én fremgangsmåde er at bruge surround-substringen med stjerne-symboler * hvilket betyder at matche alle tegn.

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

      Scriptet gentager følgende:

      It's there.

      En anden mulighed er at bruge regex operator =~ som vist nedenfor:

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

      Perioden efterfulgt af en stjerne .* Matcher nul eller flere forekommer et hvilket som helst tegn undtagen en newline-karakter.

      Kontroller, om en streng er tom

      Ofte bliver du også nødt til at kontrollere, om en variabel er en tom streng eller ikke. Du kan gøre dette ved hjælp af operatørerne -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 af strenge med sagsoperatøren

      I stedet for at bruge testoperatørerne kan du også bruge sagsangivelsen til at sammenligne strenge:

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

      Linuxize matched.

      Lexikografisk sammenligning

      Leksikografisk sammenligning er en handling, hvor to strenge sammenlignes alfabetisk ved at sammenligne tegnene i en streng sekventielt fra venstre til højre. Denne slags sammenligning bruges sjældent.

      Følgende scripts sammenligner to strenge 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

      Scriptet udsender følgende:

      Ubuntu is lexicographically greater than Linuxize.

      Konklusion

      Sammenligning af streng er en af ​​de mest basale og hyppigt anvendte operationer i Bash-scripting. Efter at have læst denne tutorial, skal du have en god forståelse af, hvordan man sammenligner strenge i Bash. Du kan også tjekke vores guide om strengkonsatenation.

      bash terminal