Vì bạn đang so sánh các số, bạn có thể sử dụng biểu thức số học , cho phép xử lý các tham số và so sánh đơn giản hơn:
wget -q --tries=10 --timeout=20 --spider http://google.com
if (( $? != 0 )); then
echo "Sorry you are Offline"
exit 1
fi
Chú ý thay vì -ne
, bạn chỉ có thể sử dụng !=
. Trong ngữ cảnh số học, chúng ta thậm chí không phải trả trước $
các tham số, nghĩa là,
var_a=1
var_b=2
(( var_a < var_b )) && echo "a is smaller"
hoạt động hoàn toàn tốt Điều này không có nghĩa là $?
tham số đặc biệt, mặc dù.
Hơn nữa, vì (( ... ))
đánh giá các giá trị khác không thành đúng, nghĩa là có trạng thái trả về 0 cho các giá trị khác không và trạng thái trả về là 1, nếu không, chúng ta có thể rút ngắn thành
if (( $? )); then
nhưng điều này có thể gây nhầm lẫn cho nhiều người hơn các tổ hợp phím được lưu có giá trị.
Cấu (( ... ))
trúc có sẵn trong Bash, nhưng không được yêu cầu bởi đặc tả vỏ POSIX (mặc dù được đề cập là có thể mở rộng).
Tất cả điều này đã được nói, tốt hơn hết là tránh $?
hoàn toàn theo ý kiến của tôi, như trong câu trả lời của Cole và câu trả lời của Steven .
if ! [[ ...
hoạt động