Android

Hur man jämför med strängar i bash

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

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

Innehållsförteckning:

Anonim

När du skriver Bash-skript behöver du ofta jämföra två strängar för att kontrollera om de är lika eller inte. Två strängar är lika när de har samma längd och innehåller samma sekvens med tecken.

Den här handledningen beskriver hur man jämför jämför strängar i Bash.

Jämförelseoperatörer

Jämförelseoperatörer är operatörer som jämför värden och returnerar sant eller falskt. När du jämför strängar i Bash kan du använda följande operatörer:

  • string1 = string2 och string1 == string2 - Jämställdhetsoperatören returnerar true om operandarna är lika.
    • Använd = 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 körs kommer det att skriva ut följande utgång.

      Strings are equal.

      Här är ett annat skript som tar inmatningen från användaren och jämför de givna strängarna. I det här exemplet kommer vi att använda ]; 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 skriptet och ange strängarna när du uppmanas:

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

      Du kan också använda det logiska och && och eller || för att jämföra strängar:

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

      Not equal

      Kontrollera om en sträng innehåller en underlag

      Det finns flera sätt att kontrollera om en sträng innehåller en substring.

      En metod är att använda surroundsträngen med asterisk symboler * vilket betyder att matcha alla tecken.

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

      Skriptet kommer att upprepa följande:

      It's there.

      Ett annat alternativ är att använda regex operator =~ som visas nedan:

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

      Perioden följt av en asterisk .* Matchar noll eller fler förekommer vilket tecken som helst utom ett tecken på en ny linje.

      Kontrollera om en sträng är tom

      Ofta måste du också kontrollera om en variabel är en tom sträng eller inte. Du kan göra detta genom att använda operatörerna -n och -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.

      Jämför strängar med falloperatören

      Istället för att använda testoperatörerna kan du också använda ärendeklarationen för att jämföra strängar:

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

      Linuxize matched.

      Lexikografisk jämförelse

      Lexikografisk jämförelse är en operation där två strängar jämförs alfabetiskt genom att jämföra karaktärerna i en sträng i följd från vänster till höger. Denna typ av jämförelse används sällan.

      Följande skript jämför leksikografiskt två strängar:

      #!/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 kommer att mata ut följande:

      Ubuntu is lexicographically greater than Linuxize.

      Slutsats

      Jämförelse av sträng är en av de mest grundläggande och ofta använda operationerna i Bash-skript. När du har läst denna handledning bör du ha en god förståelse för hur du kan jämföra strängar i Bash. Du kan också kolla vår guide om sammankoppling av strängar.

      bash terminal