La gestione delle stringhe fa parte di qualsiasi linguaggio di programmazione. Lo scripting della shell Bash non è diverso. Anche la sintassi è praticamente la stessa.
In questo breve tutorial, ti mostrerò come confrontare le stringhe negli script di shell Bash.
Confronto tra stringhe Bash
Ecco come confrontare le stringhe in Bash.
if [ "$string1" == "$string2" ]
Puoi anche usare una stringa direttamente invece di usare una variabile.
if [ "$string1" == "This is my string" ]
Lascia che te lo mostri con esempi appropriati.
Controlla se due stringhe sono uguali
Se vuoi verificare se due stringhe sono uguali, ecco un esempio:
#!/bin/bash
string1="MyString"
string2="MyString"
if [ "$string1" == "$string2" ]
then
echo "Equal Strings"
else
echo "Strings not equal"
fi
Suggerimento:prestare attenzione agli spazi
Deve esserci uno spazio tra [
e il nome della variabile e l'operatore di uguaglianza ==. Se perdi uno degli spazi qui, vedrai un errore come "operatore unario previsto" o mancante "]".
Controlla se le stringhe non sono uguali in Bash
Invece di controllare la qualità, facciamo il contrario e controlliamo la disuguaglianza. Bash fornisce anche l'operatore di negazione in modo da poter utilizzare facilmente la condizione "se non uguale" negli script di shell.
if [ "$string1" != "Not MyString" ]
L'esempio completo si presenta così:
#!/bin/bash
string1="MyString"
if [ "$string1" != "Not MyString" ]
then
echo "Not Equal Strings"
else
echo "Strings equal"
fi
Verifica se la stringa è nulla o vuota in Bash
A differenza di altri linguaggi come C++, in Bash puoi controllare se la stringa è nulla o vuota con un solo comando:
if [ -z "$VAR" ]
Il -z controlla effettivamente se la lunghezza della variabile è zero o meno. Se la variabile non è impostata o se è vuota (uguale a “”), la lunghezza sarà zero e quindi la condizione tornerà true.
Un esempio completo può essere visto qui:
#!/bin/bash
string1=
string2=""
if [ -z "$string1" ]
then
echo "Null Strings"
fi
if [ -z "$string2"]
then
echo "Empty String"
fi
Nota sull'uso della parentesi singola "[]" e della doppia parentesi "[[]]" negli script bash
Puoi anche usare l'istruzione if con doppie parentesi come questa:
if [[ "$string1" == "My String" ]]
La parentesi unica è la vecchia convenzione Posix e presenta alcune carenze. Se non usi le virgolette intorno alle variabili e la variabile non è definita, scomparirà dal codice e ciò comporterà un errore di sintassi.
if [ $string1 == "My String" ]
Se la variabile $string1 è vuota o non è definita nel codice precedente, quella riga diventerà equivalente a
if [ == "$string2" ]
Conclusione
Spero che questo breve tutorial ti abbia aiutato a confrontare le stringhe negli script della shell bash. Consiglio di leggere anche un altro breve tutorial sul comando bash sleep.
Se hai domande o suggerimenti, sentiti libero di lasciare un commento qui sotto.