Ho uno script di shell in cui abbiamo le seguenti righe if [ -z "$xyz" ]
e if [ -n "$abc" ]
, ma non sono sicuro di quale sia il loro scopo. Qualcuno può spiegare?
Ho uno script di shell in cui abbiamo le seguenti righe if [ -z "$xyz" ]
e if [ -n "$abc" ]
, ma non sono sicuro di quale sia il loro scopo. Qualcuno può spiegare?
Risposte:
Puoi trovare un ottimo riferimento per gli operatori di Bash qui . Se stai usando una shell diversa, cerca <my shell> operators
e troverai tutto ciò di cui hai bisogno. Nel tuo caso particolare, stai utilizzando:
-n
string is not null.
-z
string is null, that is, has zero length
Illustrare:
$ foo="bar";
$ [ -n "$foo" ] && echo "foo is not null"
foo is not null
$ [ -z "$foo" ] && echo "foo is null"
$ foo="";
$ [ -n "$foo" ] && echo "foo is not null"
$ [ -z "$foo" ] && echo "foo is null"
foo is null
man test
o man [
ti darà tutte le opzioni per testare il comando. In questo caso, -n sta testando per vedere se il contenuto di $ abc ha una lunghezza diversa da zero e -z sta testando per vedere se il contenuto di $ xyz è una stringa di lunghezza zero.
man test
(sempre?) Fornisce la pagina man per la versione del programma esterno, che (almeno per la versione GNU-coreutils) avverte esplicitamente che alcune shell (la maggior parte di IME) hanno una versione incorporata che potrebbe essere diversa.