Poiché stai confrontando i numeri, puoi utilizzare un'espressione aritmetica , che consente una gestione più semplice dei parametri e del confronto:
wget -q --tries=10 --timeout=20 --spider http://google.com
if (( $? != 0 )); then
echo "Sorry you are Offline"
exit 1
fi
Nota come, invece -ne
, puoi semplicemente usare !=
. In un contesto aritmetico, non dobbiamo nemmeno anteporre $
ai parametri, ovvero
var_a=1
var_b=2
(( var_a < var_b )) && echo "a is smaller"
funziona perfettamente. Questo, tuttavia, non si applica al $?
parametro speciale.
Inoltre, poiché (( ... ))
valuta valori diversi da zero su true, ovvero ha uno stato di restituzione di 0 per valori diversi da zero e uno stato di restituzione di 1 altrimenti, potremmo accorciare a
if (( $? )); then
ma questo potrebbe confondere più persone di quanto valgono le sequenze di tasti salvate.
Il (( ... ))
costrutto è disponibile in Bash, ma non richiesto dalla specifica della shell POSIX (menzionata come possibile estensione).
Detto questo, è meglio evitare del $?
tutto secondo me, come nella risposta di Cole e nella risposta di Steven .
if ! [[ ...
funziona