Android

Hoe tekenreeksen in bash te vergelijken

how to find length of string in bash

how to find length of string in bash

Inhoudsopgave:

Anonim

Wanneer u Bash-scripts schrijft, moet u vaak twee strings vergelijken om te controleren of ze gelijk zijn of niet. Twee tekenreeksen zijn gelijk wanneer ze dezelfde lengte hebben en dezelfde reeks tekens bevatten.

Deze tutorial beschrijft hoe je strings in Bash kunt vergelijken.

Vergelijkingsoperatoren

Vergelijkingsoperatoren zijn operatoren die waarden vergelijken en waar of onwaar retourneren. Bij het vergelijken van strings in Bash kunt u de volgende operatoren gebruiken:

  • string1 = string2 en string1 == string2 - De operator voor gelijkheid retourneert true als de operanden gelijk zijn.
    • Gebruik de operator = met de 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

      Wanneer het script wordt uitgevoerd, wordt de volgende uitvoer afgedrukt.

      Strings are equal.

      Hier is een ander script dat de invoer van de gebruiker neemt en de gegeven strings vergelijkt. In dit voorbeeld gebruiken we de ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

      Voer het script uit en voer de tekenreeksen in wanneer daarom wordt gevraagd:

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

      U kunt ook de logische en && en of || om strings te vergelijken:

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

      Not equal

      Controleer of een string een substring bevat

      Er zijn meerdere manieren om te controleren of een string een substring bevat.

      Een benadering is om de substring te omringen met asterisk-symbolen * wat betekent dat alle tekens overeenkomen.

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

      Het script echo het volgende:

      It's there.

      Een andere optie is om de regex-operator =~ zoals hieronder weergegeven:

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

      De periode gevolgd door een asterisk .* Komt overeen met nul of meer tekens, behalve een nieuweteken.

      Controleer of een string leeg is

      Heel vaak moet u ook controleren of een variabele een lege string is of niet. U kunt dit doen met behulp van de operatoren -n en -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.

      Strings vergelijken met de case-operator

      In plaats van de testoperators te gebruiken, kunt u ook de case-instructie gebruiken om strings te vergelijken:

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

      Linuxize matched.

      Lexicografische vergelijking

      Lexicografische vergelijking is een bewerking waarbij twee strings alfabetisch worden vergeleken door de tekens in een string opeenvolgend van links naar rechts te vergelijken. Dit soort vergelijking wordt zelden gebruikt.

      De volgende scripts vergelijken lexicografisch twee strings:

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

      Het script zal het volgende uitvoeren:

      Ubuntu is lexicographically greater than Linuxize.

      Conclusie

      Het vergelijken van tekenreeksen is een van de meest elementaire en meest gebruikte bewerkingen in Bash-scripts. Na het lezen van deze tutorial, zou je een goed begrip moeten hebben van hoe je strings in Bash kunt vergelijken. U kunt ook onze gids raadplegen over het samenvoegen van tekenreeksen.

      bash-terminal