เนื่องจากคุณกำลังเปรียบเทียบตัวเลขคุณสามารถใช้นิพจน์ทางคณิตศาสตร์ซึ่งช่วยให้การจัดการพารามิเตอร์และการเปรียบเทียบง่ายขึ้น:
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
แต่สิ่งนี้อาจทำให้ผู้คนสับสนมากกว่าการกดแป้นที่บันทึกไว้นั้นมีค่า
(( ... ))
สร้างที่มีอยู่ในทุบตี แต่ไม่จำเป็นต้องตามข้อกำหนด POSIX เชลล์ (ดังกล่าวเป็นส่วนขยายที่เป็นไปได้แม้ว่า)
นี้เป็นทั้งหมดที่กล่าวว่ามันจะดีกว่าที่จะหลีกเลี่ยง$?
โดยสิ้นเชิงในความคิดของฉันในขณะที่คำตอบของโคลและคำตอบของสตีเฟน
if ! [[ ...
ทำงานได้