Script di shell: -z e -n opzioni con if


55

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:


66

Puoi trovare un ottimo riferimento per gli operatori di Bash qui . Se stai usando una shell diversa, cerca <my shell> operatorse 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

3

man testo 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 [non funziona per me in GNU bash, versione 4.1.2 (1) -release (x86_64-redhat-linux-gnu). Ma +1 per il test uomo.
Andrew Lorien

1
Nota 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.
dave_thompson_085
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.