ในสคริปต์ของฉันฉันพยายามตรวจสอบข้อผิดพลาดว่าอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียวเท่ากับ -v หรือไม่ แต่เป็นอาร์กิวเมนต์ที่เป็นทางเลือก ฉันใช้คำสั่ง if แต่ได้รับข้อผิดพลาดที่คาดว่าจะได้รับตัวดำเนินการยูนารี
นี่คือรหัส:
if [ $1 != -v ]; then
echo "usage: $0 [-v]"
exit
fi
แก้ไข:
ฉันควรจะเจาะจงมากขึ้น: ส่วนนี้ของสคริปต์ข้างต้นกำลังตรวจสอบอาร์กิวเมนต์ที่เป็นทางเลือกจากนั้นหากไม่ได้ป้อนอาร์กิวเมนต์ก็ควรเรียกใช้ส่วนที่เหลือของโปรแกรม
#!/bin/bash
if [ "$#" -gt "1" ]; then
echo "usage: $0 [-v]"
exit
fi
if [ "$1" != -v ]; then
echo "usage: $0 [-v]"
exit
fi
if [ "$1" = -v ]; then
echo "`ps -ef | grep -v '\['`"
else
echo "`ps -ef | grep '\[' | grep root`"
fi
echo "usage: $0 [-v]"
;$-
แสดงแฟล็กอ็อพชันเชลล์ที่แอ็คทีฟไม่ใช่ชื่อของสคริปต์ปัจจุบัน