<Precedenti | Contenuti | Succ.>
Espressioni stringa
Per valutare le stringhe vengono utilizzate le seguenti espressioni:
Tabella 27-2: espressioni stringa di test
L'espressione è vera se...
L'espressione è vera se...
stringa stringa non è nullo.
-n stringa La lunghezza di stringa è maggiore di zero.
-z stringa La lunghezza di stringa è zero.
string1 = stringa2 stringa1 == stringa2
string1 e string2 sono uguali. È possibile utilizzare il segno di uguale singolo o doppio, ma è decisamente preferibile l'uso del segno di uguale doppio.
string1 != string2 string1 e string2 non sono uguali. string1 > string2 string1 ordina dopo string2. string1 < string2 string1 ordina prima string2.
Avvertenza: il > e < gli operatori di espressione devono essere quotati (o preceduti da una barra rovesciata) quando utilizzati con testIn caso contrario, verranno interpretati dalla shell come operatori di reindirizzamento, con risultati potenzialmente distruttivi. Si noti inoltre che, mentre bash la documentazione afferma che l'ordine di ordinamento è conforme all'ordine di collazione delle impostazioni locali correnti, non lo è. L'ordine ASCII (POSIX) è utilizzato nelle versioni di bash fino alla versione 4.0 inclusa.
Ecco uno script che incorpora espressioni stringa:
#! / Bin / bash
# test-string: valuta il valore di una stringa ANSWER=maybe
se [ -z "$ANSWER" ]; allora
echo "Non c'è risposta." >&2 exit 1
fi
if [ "$ANSWER" = "yes" ]; then echo "La risposta è SÌ."
elif [ "$ANSWER" = "no" ]; then echo "La risposta è NO."
elif [ "$ANSWER" = "forse" ]; then echo "La risposta è FORSE."
altro
echo "La risposta è SCONOSCIUTA."
fi
#! / Bin / bash
# test-string: valuta il valore di una stringa ANSWER=maybe
se [ -z "$ANSWER" ]; allora
echo "Non c'è risposta." >&2 exit 1
fi
if [ "$ANSWER" = "yes" ]; then echo "La risposta è SÌ."
elif [ "$ANSWER" = "no" ]; then echo "La risposta è NO."
elif [ "$ANSWER" = "forse" ]; then echo "La risposta è FORSE."
altro
echo "La risposta è SCONOSCIUTA."
fi
In questo script valutiamo la costante RISPOSTA. Per prima cosa determiniamo se la stringa è vuota. In tal caso, terminiamo lo script e impostiamo lo stato di uscita a uno. Si noti il reindirizzamento applicato al comando echo. Questo reindirizza il messaggio di errore "Nessuna risposta" all'errore standard, che è la cosa corretta da fare con i messaggi di errore. Se la stringa non è vuota, valutiamo il valore della stringa per vedere se è uguale a "sì", "no" o "forse". Lo facciamo usando Elif, che è l'abbreviazione di "else if". Utilizzando Elif, siamo in grado di costruire un test logico più complesso.