Como você está comparando números, pode usar uma expressão aritmética , que permite um tratamento mais simples dos parâmetros e comparação:
wget -q --tries=10 --timeout=20 --spider http://google.com
if (( $? != 0 )); then
echo "Sorry you are Offline"
exit 1
fi
Observe como, em vez de -ne
, você pode apenas usar !=
. Em um contexto aritmético, nem precisamos preceder $
aos parâmetros, ou seja,
var_a=1
var_b=2
(( var_a < var_b )) && echo "a is smaller"
funciona perfeitamente bem. Isso não se aplica ao $?
parâmetro especial, no entanto.
Além disso, como (( ... ))
avalia valores diferentes de zero como true, ou seja, possui um status de retorno 0 para valores diferentes de zero e um status de retorno 1, caso contrário, poderíamos reduzir para
if (( $? )); then
mas isso pode confundir mais pessoas do que valem as teclas salvas.
A (( ... ))
construção está disponível no Bash, mas não é exigida pela especificação do shell POSIX (mencionada como possível extensão).
Isso tudo foi dito, é melhor evitar $?
por completo na minha opinião, como na resposta de Cole e resposta de Steven .
if ! [[ ...
funciona