Verdienen Sie Geld mit Ihren Tech-Blogs, Gadgets und Tipps

Kuinka voin verrata kielejä bashissa?

Huomautus: Seuraava artikkeli auttaa sinua: Kuinka verrata merkkijonoja Bashissa?

Kun kirjoitat skriptejä melkein millä tahansa kielellä, sinun on usein verrattava kahta tai useampaa merkkijonoa tarkistaaksesi, ovatko ne samoja vai eivät. Ohjelmointikielessä kahta merkkijonoa pidetään samanarvoisena, jos niillä on sama pituus ja sama merkkijono.

Tässä Artikkelissa käydään läpi kaikki merkkijonovertailut, joita saatat joutua tekemään luodessasi bash-skriptejä.

Vertailuoperaattorit vertailevat kahta Boolen arvoa – vastaus on aina joko tosi tai epätosi. Voit käyttää seuraavia operaattoreita vertaillaksesi merkkijonoja Bashissa.

  • merkkijono1 = merkkijono2 tai merkkijono1 == merkkijono2: Tasa-arvooperaattori palauttaa arvon tosi, jos molemmat operandit ovat yhtä suuret.
    • Käytä sitä = operaattorin kanssa tarkistaa [ command.
    • Use the == operator with the [[ command for pattern matching.
  • string1 != string2: The inequality operator returns true if the given operands are not equal, in this case, the given two strings. 
  • string1 =~ regex: The regex operator will return true if string1 matches the regular expression on the right. 
  • string1 > string2: The greater than operator will return true if the operator on the left is greater than the one on the right. In this case, it’ll return true if string1 is greater than string2.
  • string1 < string2: This operator works in the exact opposite way from the previous operator. The operator will return true if string1 is less than string2.
  • -z string – Returns true if the string length is zero.
  • -n string – Returns true if the string length is non-zero.

However, when using these operators, be sure to keep the following things in mind. 

  • Always use a blank space between the binary operator and the operands, in this case, the strings.
  • Use double quotes around the variable names to avoid any word spilling or globbing.
  • Since Bash doesn’t segregate variables by “type”, a given variable can be treated as a string or an integer depending on the context. 

To check if two strings are equal or not, you’ll have to use the if command along with the operator. 

#!/bin/bash

VAR1=”String1″VAR2=”String2″

if [ “$VAR1” = “$VAR2” ]; sitten echo “Jeleet ovat tasa-arvoisia.” else echo “Jotut eivät ole tasa-arvoisia.” fi

Yllä oleva katkelma tulostetaan Jouset eivät ole samoja kuten VAR1 Ja VAR2 ottaa yhteyttä eri kieliin.

Jos haluat, voit jopa antaa käyttäjän Kirjoittaa merkkijonot. Paitsi tällä kertaa sinun on käytettävä tätä == operaattorit ja [[ command. 

#!/bin/bash

read -p “Enter first string: ” VAR1read -p “Enter second string: ” VAR2

if [[ “$VAR1” == “$VAR2” ]]; sitten echo “Jeleet ovat tasa-arvoisia.” else echo “Jotut eivät ole tasa-arvoisia.” fi

Lopuksi voit myös ohittaa tämän Jos Ohje ja käytä loogista Ja (&&) Operaattori vertaa näitä kahta merkkijonoa

[[ “string1” == “string2” ]]&& echo “Equals” || echo “Ei tasa-arvoinen”

Alimerkkijonon etsiminen merkkijonosta edellyttää jokerimerkkioperaattorin käyttöä. Toimi näin.

#!/bin/bash VAR=’Onko se sana tässä lauseessa?’ Jos [[ $VAR == *”word”* ]]; sitten echo “Kyllä, siinä se.” fi

Vaihtoehtoisesti voit käyttää myös regex-operaattoria (=~).

#!/bin/bash VAR=’Onko se sana tässä lauseessa?’ Jos [[ $VAR =~ .*word.* ]]; sitten echo “Kyllä, siinä se.” fi

Jos haluat tarkistaa, onko merkkijono tyhjä, kokeile -N Ja -esim Operaattori.

#!/bin/bash VAR=” if [[ -z $VAR ]]; sitten echo “String is empty.” fi

Tämä ohjelma tulostetaan Merkkijono on tyhjä kuten VAR1 on kirjaimellisesti tyhjä merkkijono.

Jos testioperaattorit eivät ole sinun juttusi, voit myös käyttää niitä tapaus Ohje kahden merkkijonon vertailuun.

#!/bin/bash VAR=”Merkkijono1″ tapaus $VAR in “String1”) echo -n “Osuma löydetty” ;; MainString| MainString2) echo -n “MainNS” ;; esac

Yllä oleva komentosarja tulostetaan Ottelu löytyi kuten VAR vastaa kyseistä merkkijonoa.

Leksikografiset vertailut vertaavat kahta merkkijonoa aakkosjärjestyksessä vertaamalla merkkijonon merkkejä peräkkäin vasemmalta oikealle.

Voit käyttää seuraavaa komentosarjaa kahden merkkijonon leksikografiseen vertaamiseen.

#!/bin/bash VAR1=”Merkkijono1″ VAR2=”Merkkijono2”, jos [[ “$VAR1” > “$VAR2” ]]; sitten echo “${VAR1} on leksikografisesti suurempi kuin ${VAR2}.” elif [[ “$VAR1” < “$VAR2” ]]; sitten echo “${VAR2} on leksikografisesti suurempi kuin ${VAR1}.” else echo “Jot ovat samat” fi