Оскільки ви порівнюєте числа, ви можете використовувати арифметичний вираз , який дозволяє спростити обробку параметрів та порівняння:
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 ! [[ ...
твори