Android

Kako usporediti žice u bashu

Fun with Music and Programming by Connor Harris and Stephen Krewson

Fun with Music and Programming by Connor Harris and Stephen Krewson

Sadržaj:

Anonim

Pri pisanju Bash skripti često ćete morati uspoređivati ​​dvije žice da biste provjerili jesu li jednake ili ne. Dva niza su jednaka ako imaju istu duljinu i sadrže isti niz znakova.

Ovaj vodič opisuje kako usporediti nizove u Bash-u.

Operateri za usporedbu

Operatori za usporedbu su operatori koji uspoređuju vrijednosti i vraćaju vrijednost true ili false. Pri usporedbi nizova u Bashu možete koristiti sljedeće operatore:

  • string1 = string2 i string1 == string2 - Operator jednakosti vraća true ako su operandi jednaki.
    • Koristite = operator s 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

      Kada se izvrši skripta, ispisat će sljedeći izlaz.

      Strings are equal.

      Evo još jedne skripte koja uzima unos od korisnika i uspoređuje dane nizove. U ovom ćemo primjeru koristiti ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

      Pokrenite skriptu i unesite nizove kada se to od vas zatraži:

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

      Također možete koristiti logičke i && i ili || za usporedbu žice:

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

      Not equal

      Provjerite sadrži li niz podstranu

      Postoji više načina za provjeru sadrži li niz podstranu.

      Jedan od načina je upotreba okružiti podstranu sa simbolima zvjezdice * što znači da se podudaraju sa svim znakovima.

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

      Skripta odjekuje sljedeće:

      It's there.

      Druga je mogućnost upotrebe regex operatora =~ kako je prikazano u nastavku:

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

      Period koji prati zvjezdicu .* Podudara se s nulom ili više pojavljivanja bilo kojeg znaka, osim znaka nove linije.

      Provjerite je li niz prazan

      Vrlo često ćete također morati provjeriti je li varijabla prazan niz ili ne. To možete učiniti pomoću operatora -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.

      Usporedba struna s operatorom slučaja

      Umjesto korištenja testnih operatora, možete upotrijebiti i iskaz slučaja za usporedbu nizova:

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

      Linuxize matched.

      Leksikografska usporedba

      Leksikografska usporedba je radnja u kojoj se abecedno uspoređuju dva niza uspoređujući znakove u nizu uzastopno s lijeva na desno. Ovakva se usporedba rijetko koristi.

      Sljedeće skripte leksikografski uspoređuju dva niza:

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

      Skripta će proizvesti sljedeće:

      Ubuntu is lexicographically greater than Linuxize.

      Zaključak

      Usporedba niza jedna je od najosnovnijih i najčešće korištenih operacija u Bash scenariju. Nakon što ste pročitali ovaj vodič, trebali biste dobro razumjeti kako usporediti nizove u Bash-u. Također možete provjeriti naš vodič o spajanju nizova.

      bash terminal