Поскольку вы сравниваете числа, вы можете использовать арифметическое выражение , которое упрощает обработку параметров и сравнение:
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 ! [[ ...
работает