Поскольку вы сравниваете числа, вы можете использовать арифметическое выражение , которое упрощает обработку параметров и сравнение:
wget -q --tries=10 --timeout=20 --spider http://google.com
if (( $? != 0 )); then
echo "Sorry you are Offline"
exit 1
fi
Обратите внимание, как вместо -ne, вы можете просто использовать !=. В арифметическом контексте нам даже не нужно прибегать $к параметрам, т. Е.
var_a=1
var_b=2
(( var_a < var_b )) && echo "a is smaller"
отлично работает Это не относится к $?специальному параметру, хотя.
Кроме того, поскольку (( ... ))ненулевые значения оцениваются как истина, т. Е. Имеет статус возврата 0 для ненулевых значений и статус возврата 1 в противном случае, мы могли бы сократить до
if (( $? )); then
но это может сбить с толку больше людей, чем стоит сэкономленное нажатие клавиш.
(( ... ))Конструкция доступна в Bash, но не требует спецификации POSIX оболочки (упоминается в качестве возможного расширения, хотя).
Все это , как говорится, это лучше избегать $?вообще , на мой взгляд, как и в ответ Коула и ответ Стивена .
if ! [[ ...работает