<Precedenti | Contenuti | Succ.>
(( )) - Progettato per numeri interi
Oltre a un [[]] comando composto, bash fornisce anche il (( )) comando composto, utile per operare su interi. Supporta una serie completa di valutazioni aritmetiche, un argomento che tratteremo completamente nel capitolo 34.
(( )) è usato per eseguire test di verità aritmetici. Un test di verità aritmetica risulta vero se il risultato della valutazione aritmetica è diverso da zero.
[io@linuxbox~]$ se ((1)); then echo "È vero."; fi
È vero.
[io@linuxbox~]$ se ((0)); then echo "È vero."; fi
[io@linuxbox~]$
[io@linuxbox~]$ se ((1)); then echo "È vero."; fi
È vero.
[io@linuxbox~]$ se ((0)); then echo "È vero."; fi
[io@linuxbox~]$
utilizzando (( )), possiamo semplificare leggermente il test-intero2 sceneggiatura in questo modo:
#! / Bin / bash
# test-integer2a: valuta il valore di un intero.
INT=-5
if [[ "$INT" =~ ^-?[0-9]+$ ]]; allora se ((INT == 0)); poi
echo "INT è zero."
altro
if ((INT < 0)); poi
echo "INT è negativo."
altro
echo "INT è positivo."
fi
if (( ((INT % 2)) == 0)); poi
echo "INT è pari."
altro
echo "INT è dispari."
fi
#! / Bin / bash
# test-integer2a: valuta il valore di un intero.
INT=-5
if [[ "$INT" =~ ^-?[0-9]+$ ]]; allora se ((INT == 0)); poi
echo "INT è zero."
altro
if ((INT < 0)); poi
echo "INT è negativo."
altro
echo "INT è positivo."
fi
if (( ((INT % 2)) == 0)); poi
echo "INT è pari."
altro
echo "INT è dispari."
fi
echo "INT non è un numero intero." >&2 uscita 1
fi
echo "INT non è un numero intero." >&2 uscita 1
fi
Nota che usiamo i segni di minore e maggiore di e che == viene utilizzato per verificare l'equivalenza. Questa è una sintassi dall'aspetto più naturale per lavorare con i numeri interi. Nota anche che, poiché il comando composto (( )) fa parte della sintassi della shell più che di un normale comando, si occupa solo di interi, è in grado di riconoscere le variabili per nome e non necessita di espansione per essere eseguita. ne discuteremo (( )) e la relativa espansione aritmetica ulteriormente nel capitolo 34.