2013-08-08 18 views
9

Ho un'istruzione if che è necessario eseguire, purché il valore che ho memorizzato nella variabile $counter sia maggiore di 5.Confronta la variabile con numero intero nella shell?

Ecco la rispettiva sezione del mio script corrente (non funzionante):

if $counter > 5 
then 
    echo "something" 
fi 

L'errore che sto facendo è probabilmente molto evidente, ma per qualche ragione non ho potuto trovare la soluzione online. Grazie!

risposta

20

Bene che è abbastanza semplice:

if [ "$counter" -gt 5 ] 
then 
    echo "something" 
fi 
+1

A meno che non sia richiesta la compatibilità 'sh', è meglio usare' [['e']] 'invece di' ['e'] '. Vedi http://mywiki.wooledge.org/BashFAQ/031 – Thomas

+0

Naturalmente. È inteso per compatibilità visto che non ha menzionato bash nel titolo. – konsolebox

+0

@konsolebox, devi guardare i tag sotto la domanda. I titoli sono molto spesso fuorvianti. –

11

aritmetica deve essere fatto tra le (( e )):

if (($counter > 5)) 

Per inciso, è anche possibile lasciare fuori il $ in aritmetica, anche se non fa male a tenerlo.

+0

Sì però, direi espressioni condizionali dovrebbe essere fatto in '[[]]'. Quindi quale dovrebbe essere davvero? Sceglier '[[]]'. Vedi i miei argomenti qui: http://stackoverflow.com/a/18568726/445221. (Commentando per riferimento). – konsolebox

Problemi correlati