Karena Anda membandingkan angka, Anda dapat menggunakan ekspresi aritmatika , yang memungkinkan penanganan parameter dan perbandingan yang lebih mudah:
wget -q --tries=10 --timeout=20 --spider http://google.com
if (( $? != 0 )); then
echo "Sorry you are Offline"
exit 1
fi
Perhatikan bagaimana alih-alih -ne
, Anda bisa menggunakannya !=
. Dalam konteks aritmatika, kita bahkan tidak perlu menambahkan $
parameter, yaitu,
var_a=1
var_b=2
(( var_a < var_b )) && echo "a is smaller"
berfungsi dengan sangat baik. Ini tidak sesuai $?
dengan parameter khusus.
Lebih lanjut, karena (( ... ))
mengevaluasi nilai bukan nol menjadi benar, yaitu, memiliki status pengembalian 0 untuk nilai bukan nol dan status pengembalian 1 jika tidak, kita dapat mempersingkat menjadi
if (( $? )); then
tetapi ini mungkin membingungkan lebih banyak orang daripada nilai penekanan tombol yang disimpan.
The (( ... ))
membangun tersedia di Bash, tetapi tidak diperlukan oleh POSIX shell spesifikasi (disebutkan sebagai kemungkinan perpanjangan, meskipun).
Semua ini dikatakan, lebih baik untuk menghindari $?
sama sekali menurut saya, seperti dalam jawaban Cole dan jawaban Steven .
if ! [[ ...
bekerja