Ho una profondità della variabile bash e vorrei testare se è uguale a 0. Nel caso si, voglio interrompere l'esecuzione dello script. Finora ho:bash scripting - controlla se la variabile bash è uguale a 0
zero=0;
if [ $depth -eq $zero ]; then
echo "false";
exit;
fi
Purtroppo, questo porta a:
[: -eq: unary operator expected
(potrebbe essere un po 'impreciso a causa di traduzione)
prega, come posso modificare il mio script per ottenerlo lavoro?
sto ottenendo profondità come risultato da un altro programma. Ho provato a farlo eco e non c'era nulla nell'output. Tuttavia, quando uso [[]] come suggerito da @Jacek Dominiak, lo script funziona correttamente (ciò che è piuttosto strano se la variabile è davvero non impostata). Devo ammettere che non capisco cosa stia succedendo qui ... – Perlnika
La tua variabile di profondità non è impostata. Ciò significa che bash vede un'espressione che dice '[-eq 0]; poi 'che non ha senso ad esso. '[[]]' è la versione più sicura che sembra rendere bash vederlo come [[null -eq 0]] che è corretto. – cyon
Un modo più sicuro per controllare è racchiudere entrambi i lati tra virgolette doppie, ad esempio "if [" $ depth "-eq" 0 "]'; in questo modo, una variabile unset ('$ depth') valuta" "(che ovviamente non è uguale a zero) –