Confronta le stringhe in Bash
Possiamo confrontare le stringhe utilizzando vari operatori di confronto e verificare se la stringa contiene sottostringa o meno utilizzando le espressioni regolari.
Confronto di stringhe in Bash
Confronto di stringhe significa controllare se le stringhe fornite sono uguali o meno. Due o più stringhe sono uguali se hanno la stessa lunghezza e contengono la stessa sequenza di caratteri.
Usiamo vari operatori di confronto di stringhe che restituiscono vero o falso a seconda della condizione. Alcuni degli operatori di confronto tra stringhe ampiamente utilizzati potrebbero essere elencati come:
string1 = string2 |
Operatore di uguaglianza utilizzato con il comando [ e restituisce true se entrambi gli operandi sono uguali. |
string1 == string2 |
Operatore di uguaglianza utilizzato con il comando [[ e restituisce true se entrambi gli operandi sono uguali. |
string1 != string2 |
Operatore di disuguaglianza che restituisce true se due operandi non sono uguali. |
string1 =~ regex |
Operatore Regex che restituisce true se la string1 corrisponde alla regex estesa |
string1 > string2 |
Operatore maggiore di che restituisce true se string1 è maggiore di string2 in base all’ordine lessicografico (alfabetico) |
string1 < string2 |
Operatore minore di che restituisce true se string1 è minore di string2 in base all’ordine lessicografico (alfabetico) |
-z string |
Restituisce true se la lunghezza di string è 0 . |
-n string |
Restituisce true se la lunghezza di string non è 0 . |
String1="Hello World!!"
String2="Hello World!!"
String3="Delft Stack"
if [ "$String1" = "$String2" ]; then
echo "String1 and String2 are equal."
else
echo "String1 and String2 are not equal."
fi
if [[ "$String1" == "$String2" ]]; then
echo "String1 and String2 are equal."
else
echo "String1 and String2 are not equal."
fi
if [[ "$String1" != "$String3" ]]; then
echo "String1 and String3 are not equal."
else
echo "String1 and String3 are equal."
fi
Produzione:
String1 and String2 are equal.
String1 and String2 are equal.
String1 and String3 are not equal.
Qui, se confrontiamo String1
e String2
usando inizialmente l’operatore =
. Poiché String1
e String2
hanno entrambe la stessa lunghezza con la stessa sequenza di caratteri, l’operatore di confronto restituisce true
e quindi otteniamo String1 and String2 are equal.
. come output dal primo blocco if-else
del programma.
Allo stesso modo, nel secondo programma, confrontiamo String1
e String2
utilizzando l’operatore ==
. Dobbiamo usare [[
per il confronto in questo caso.
Infine, confrontiamo String1
e String3
utilizzando l’operatore !=
.
Confronto lessicografico in Bash
Confronto lessicografico significa confrontare le stringhe in base all’ordine alfabetico. Per il confronto lessicografico, utilizziamo gli operatori >
e <
.
name1="Kamal"
name2="Abinash"
if [[ "$name1" > "$name2" ]]; then
echo "${name1} is greater then ${name2}."
elif [[ "$name1" < "$name2" ]]; then
echo "${name2} is greater than ${name1}."
else
echo "Both the namees are equal"
fi
Produzione:
Kamal is greater then Abinash.
In questo programma, name1
e name2
vengono confrontati lessicograficamente. Poiché K
viene dopo A
in ordine alfabetico, K
ha un valore più alto di A
e quindi "$name1" > "$name2"
restituisce true
e otteniamo come output Kamal is greater then Abinash.
.
Controlla se una stringa è vuota o meno
Usiamo gli operatori -n
e -z
per verificare se la stringa è vuota o meno.
String=""
if [[ -z $String ]]; then
echo "The variable String is an empty string."
fi
Produzione:
The variable String is an empty string.
In questo programma, String
è una variabile vuota. Poiché l’operatore -z
restituisce true
se la lunghezza di String
è 0
e quindi otteniamo The variable String is an empty string.
come output del programma dato.
String="Test"
if [[ -n $String ]]; then
echo "The variable String is not an empty string."
fi
Produzione:
The variable String is not an empty string.
In questo programma, String
non è una variabile vuota. Poiché l’operatore -n
restituisce true
se la lunghezza di String
non è 0
e quindi otteniamo The variable String is not an empty string.
come output del programma dato.
Controlla se una stringa contiene una sottostringa
Per verificare se una stringa contiene una sottostringa, possiamo usare l’operatore =~
(Regex
).
L’operatore regex
restituisce true
se la stringa
corrisponde all’espressione estesa regex
. Dobbiamo fare un’espressione regex
appropriata per il confronto.
String='My name is Delft.'
if [[ $String =~ .*Delft.* ]]; then
echo "The given string has Delft on it."
fi
Produzione:
The given string has Delft on it.
Qui, .*Delft.*
È l’espressione regex
da trovare, che dice corrisponde a qualsiasi stringa, zero o più caratteri, prima e dopo Delft.
. Controlla se la stringa contiene o meno la sottostringa Delft
.
Poiché Delft
è presente nella stringa data, la condizione data è soddisfatta e otteniamo The given string has Delft on it.
. come uscita.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn