Vergelijk string in BASH

  • Yurii Anneticus
  • 0
  • 3173
  • 400
>

De noodzaak om strings in een Bash-script te vergelijken, komt relatief vaak voor en kan worden gebruikt om op bepaalde voorwaarden te controleren voordat u doorgaat naar het volgende deel van een script. Een tekenreeks kan elke reeks tekens zijn. Om te testen of twee strings hetzelfde zijn, moeten beide strings exact dezelfde tekens en in dezelfde volgorde bevatten. Het kan een woord of een hele zin zijn. Bijvoorbeeld, string een is gelijk aan string een maar is niet gelijk aan snaar twee. Krijg het idee?

In deze handleiding laten we je zien hoe je strings in de Bash-shell op een Linux-systeem kunt vergelijken. We zullen dit laten zien in de context van een eenvoudig if / else Bash-script, zodat je kunt zien hoe het testen op deze voorwaarde zou werken bij het ontwikkelen van scripts, maar we zullen ook laten zien hoe dezelfde vergelijking kan worden gedaan in de opdrachtregelterminal.

In deze tutorial leer je:
  • Hoe strings in Bash te vergelijken
  • Voorbeeld if / else Bash-scripts die strings vergelijken
Strings vergelijken in Bash
Softwarevereisten en Linux Command Line-conventies
Categorie Vereisten, conventies of gebruikte softwareversie
Systeem Elke Linux-distro
Software Nvt
Andere Bevoorrechte toegang tot uw Linux-systeem als root of via het sudo opdracht.
Conventies # - vereist dat gegeven linux-commando's worden uitgevoerd met root-privileges, hetzij direct als rootgebruiker, hetzij door gebruik van sudo opdracht
$ - vereist dat gegeven linux-commando's worden uitgevoerd als een gewone niet-geprivilegieerde gebruiker

Vergelijk of twee strings gelijk zijn

U kunt een terminal op uw systeem openen en enkele van deze voorbeelden gebruiken om een ​​idee te krijgen van hoe Bash-operators werken als het gaat om het vergelijken van strings.

U kunt de volgende syntaxis gebruiken om twee strings te vergelijken.

 $ ["appels" = "appels"] $ echo $? 0 

De geretourneerde waarde van 0 betekent waar. Met andere woorden, de snaren komen overeen (zoals we duidelijk voor onszelf kunnen zien).

Laten we een andere proberen.

 $ ["appels" = "sinaasappels"] $ echo $? 1 

In dit voorbeeld, appels is niet gelijk aan sinaasappels, dus een waarde van 1 (false) wordt geretourneerd. Complexere voorbeelden worden het best weergegeven in de context van Bash-scripts, die we in de volgende sectie behandelen.

Voorbeeld Bash-scripts om tekenreeksen te vergelijken

In een Bash-script slaat u normaal gesproken een of beide strings op als variabelen voordat u ze vergelijkt. Hier is een eenvoudig voorbeeld.

#! / bin / bash string1 = "appels" string2 = "sinaasappels" if ["$ string1" = "$ string2"]; echo dan "De twee snaren zijn gelijk." anders echo "De twee snaren zijn niet gelijk." fi

Het uitvoeren van dit script levert de volgende uitvoer op.

 De twee snaren zijn niet gelijk. 

Maar = is niet de enige operator die voor ons beschikbaar is. We kunnen ook testen om te zien of twee strings niet gelijk zijn aan de != operator.

#! / bin / bash string1 = "appels" string2 = "sinaasappels" if ["$ string1"! = "$ string2"]; dan echo "Strings zijn anders." anders echo "Strings zijn niet anders." fi

Het uitvoeren van dit script levert de volgende uitvoer op.

 Snaren zijn anders. 

Er is ook -z om te testen of de stringlengte 0 is, en -n om te testen of de stringlengte niet nul is.

#! / bin / bash if [[-z $ string]]; echo dan "De string is leeg." else echo "De string is niet leeg." fi

Het uitvoeren van dit script levert de volgende uitvoer op.

 De string is leeg. 

En hetzelfde script met -n en een niet-nul string in plaats daarvan:



#! / bin / bash string = "hallo" if [[-n $ string]]; dan echo "De string is niet leeg." anders echo "De string is leeg." fi

Het uitvoeren van dit script levert de volgende uitvoer op.

 De string is niet leeg. 

Gevolgtrekking

In deze handleiding hebben we gezien hoe we strings in Bash kunnen vergelijken, zowel vanaf de opdrachtregel als in if / else Bash-scripts. Deze functionaliteit kan natuurlijk worden uitgebreid naar robuustere scripts die invoer van gebruikers lezen of de case-operator gebruiken, enz.

Dit zijn alle vergelijkingsmethoden die u nodig zou moeten hebben om strings in Bash te vergelijken. Er zijn nog meer bij het vergelijken van getallen, zoals de -lt (minder dan) en -gt (groter dan) operators. Maar we behandelen dat in meer detail in onze Bash-scriptgids.




Niemand heeft nog op dit artikel gereageerd.

Een verzameling nuttige informatie over het Linux-besturingssysteem en nieuwe technologieën
Nieuwe artikelen, praktische tips, gedetailleerde recensies en handleidingen. Voel je thuis in de wereld van het Linux-besturingssysteem