2013-03-20 11 views
7

Ok, quindi, all'interno del mio script (questa è la mia prima volta che lavoro con bash) mi viene risposto con 2 errori attesi dall'operatore unario. Il codice stesso funziona davvero bene, ma mi sta presentando questi errori in fase di esecuzione.Bash Unario operatore previsto

[: !=: unary operator expected 

per la linea

if [ ${netmask[1]} != "" ]; do 

così per il primo errore, si butta quando ${netmask[1]} è "" (null), ho provato diverse idee e ancora non riesco a farlo funzionare senza ritornare che errore nel processo

Qualsiasi aiuto sarebbe apprezzato!

EDIT: risolto aggiungendo virgolette (grrr)

if [ "${netmask[1]}" != "" ]; do 
+0

grazie, che ha aiutato a sistemare il mio bug in modo super veloce. La spiegazione è circa 2/3 del modo in giù in questa pagina, nel caso non sia ovvio per nessun altro http://linuxcommand.org/wss0100.php – craq

risposta

5

Se si desidera controllare il valore null per una variabile, utilizzare -z operatore:

if [ -z "${netmask[1]}" ]; then 

On esempio:

VAR="" 

if [ -z "$VAR" ]; then 
    echo This will get printed 
fi 

Modifica: Notare le parentesi attorno alla variabile: "$VAR".

+0

Ho provato anche quello, ma non sembra funzionare, invece in realtà inverte i valori true e false per il ciclo. cioè, quando dovrebbe essere vero, entra nel resto, e quando dovrebbe essere falso dice che è vero – ThePGtipsy

+0

@ThePGtipsy - Penso che tu abbia qualche altro valore '$ {netmask [1]}' rispetto a '" "'. Guarda l'esempio nella mia risposta: in realtà funziona come previsto. – kamituel

+0

@ThePGtipsy - heh, ho incluso le virgolette;) – kamituel

Problemi correlati