Android

Cum se compară șirurile în bash

Mooc Maîtriser le shell Bash - le Grand direct - Posez vos questions sur FUN

Mooc Maîtriser le shell Bash - le Grand direct - Posez vos questions sur FUN

Cuprins:

Anonim

Când scrieți scripturi Bash, va trebui să comparați adesea două șiruri pentru a verifica dacă sunt egale sau nu. Două șiruri sunt egale atunci când au aceeași lungime și conțin aceeași secvență de caractere.

Acest tutorial descrie cum puteți compara șirurile în Bash.

Operatori de comparație

Operatorii de comparație sunt operatori care compară valori și returnează adevărat sau fals. Când comparați șiruri în Bash, puteți utiliza următorii operatori:

  • string1 = string2 și string1 == string2 - Operatorul de egalitate returnează adevărat dacă operanțele sunt egale.
    • Folosiți = operatorul cu 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

      Când scriptul este executat, acesta va imprima următoarea ieșire.

      Strings are equal.

      Iată un alt script care preia intrarea de la utilizator și compară șirurile date. În acest exemplu, vom folosi ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

      Rulați scriptul și introduceți șirurile când vi se solicită:

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

      Puteți utiliza, de asemenea, logica și && și sau || pentru a compara șiruri:

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

      Not equal

      Verificați dacă o șir conține o substrat

      Există mai multe modalități de a verifica dacă un șir conține o substrat.

      O abordare este de a utiliza încercuirea substratului cu simboluri asterisc * ceea ce înseamnă că potrivim toate caracterele.

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

      Scriptul va ecua următoarele:

      It's there.

      O altă opțiune este utilizarea operatorului regex =~ așa cum se arată mai jos:

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

      Perioada urmată de un asterisc .* potrivește cu zero sau mai multe apariții cu orice caracter, cu excepția unui caracter newline.

      Verificați dacă o șir este gol

      Destul de des, va trebui să verificați dacă o variabilă este un șir gol sau nu. Puteți face acest lucru folosind operatorii -n și -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.

      Compararea șirurilor cu operatorul de caz

      În loc să folosiți operatorii de testare, puteți folosi instrucțiunea de caz pentru a compara șiruri:

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

      Linuxize matched.

      Comparație lexicografică

      Comparația lexicografică este o operație în care două șiruri sunt comparate alfabetic prin compararea caracterelor dintr-un șir secvențial de la stânga la dreapta. Acest tip de comparație este rar utilizat.

      Următoarele scripturi compară două șiruri lexicografic:

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

      Scriptul va scoate următoarele:

      Ubuntu is lexicographically greater than Linuxize.

      Concluzie

      Compararea șirului este una dintre cele mai de bază și frecvent utilizate operațiuni în scripturile Bash. După citirea acestui tutorial, ar trebui să înțelegeți cum să comparați șirurile în Bash. Puteți verifica, de asemenea, ghidul nostru despre concatenarea șirului.

      terminalul bash