ฉันมีผลลัพธ์ที่ขัดแย้งกันในพื้นที่นี้ด้วยตัวเอง นี่คือผลลัพธ์จากการทดลองเชิงประจักษ์ของฉัน ประการแรก ' ทฤษฎี ' บางคำเกี่ยวกับคำสั่ง bash หรือ * nix:
- สำเร็จ == 0 ... กล่าวคือ ไม่มีรหัสสถานะข้อผิดพลาด)
- FAIL! = 0 ...... รหัสสถานะบางส่วน
ตัวอย่าง:
if ls -lt /nonexistantdir
then
echo "found"
else
echo "FAIL"
fi
#
echo
ls -lt /nonexistantdir; echo "status = $?"
echo "status = $?"
เอาท์พุท:
ls: cannot access '/nonexistantdir': No such file or directory
FAIL...
ls: cannot access '/nonexistantdir': No such file or directory
status = 2
ดังที่แสดงls
คำสั่งส่งคืนรหัสสถานะ = 2 เมื่อคุณลองไดเรกทอรีที่ถูกต้องสถานะจะเป็นศูนย์ ( 0 ) ไม่เหมือนกับภาษาอื่นเกือบทั้งหมด
กฎ # 1 - สร้าง ...
เราต้องจำไว้ว่าเรากำลังทดสอบรหัสข้อผิดพลาดในif
คำสั่งBash ฉันตั้งค่าคงที่หรือคุณสามารถใช้เชลล์true
หรือfalse
คำสั่ง
TRUE=0
FALSE=1
# valid number function
#
valNum()
{
flag=$TRUE
if [[ $1 != [1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ]]; then
echo "Invalid Number"
flag=$FALSE
fi
return $flag
}
# later on ...
#
if validNum Abc
then
echo "Lucky number"
else
echo "Not lucky."
fi
และเอาท์พุท:
Invalid Number
Not lucky.
อย่างไรก็ตามฉันแนะนำให้คุณให้ ' up-vote ' @Gilles เพราะคำตอบของเขาคือคำตอบที่ถูกต้อง ฉันแค่ต้องการลดความเรียบง่ายของ ePaper ลง
อีกสิ่งหนึ่งtest
คำสั่ง ดูเหมือนว่า:
[[ some-expression ]];
เวลาส่วนใหญ่. และตัวอย่างเช่น:
$ test 1
$ echo "result = $?"
result = 0
$ test 0
$ echo "result = $?"
result = 0
ศูนย์ (0) เป็นจริง ทำไม? หน้าคนบอกว่าอาร์กิวเมนต์เดียวคือ ' จริง ' เมื่อไม่เป็นโมฆะ
อ้างอิง: