Tôi đã có kết quả mâu thuẫn trong lĩnh vực này bản thân mình. Dưới đây là kết quả từ các thí nghiệm thực nghiệm của tôi. Đầu tiên, một số ' lý thuyết ' về các lệnh bash hoặc * nix:
- THÀNH CÔNG == 0 ... viz. không có mã trạng thái lỗi)
 
- FAIL! = 0 ...... một số mã trạng thái
 
Thí dụ:
if  ls -lt /nonexistantdir
then 
    echo "found"
else
    echo "FAIL"
fi
#
echo
ls -lt /nonexistantdir; echo "status = $?"
echo "status = $?"
Đầu ra:
ls: cannot access '/nonexistantdir': No such file or directory
FAIL... 
ls: cannot access '/nonexistantdir': No such file or directory
status = 2
Như được hiển thị, lslệnh trả về mã trạng thái = 2. Khi bạn thử một thư mục hợp lệ, trạng thái bằng 0 ( 0 ). Không giống như hầu hết các ngôn ngữ khác.
quy tắc số 1 - Thực hiện ...
Chúng ta phải nhớ rằng chúng ta đang kiểm tra mã lỗi trong ifcâu lệnh Bash . Tôi thiết lập các hằng, hoặc bạn có thể sử dụng shell truehoặc falsecác lệnh.  
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
và đầu ra:
Invalid Number
Not lucky.
Tuy nhiên, tôi khuyên bạn nên đưa ra bất kỳ ' phiếu bầu nào ' @Gilles vì câu trả lời của anh ấy là câu trả lời đúng. Tôi chỉ muốn có được mặt đơn giản xuống trên ePaper.
Chỉ cần một điều khác, testlệnh. Điều này trông giống như:
[[ some-expression ]]; 
Hầu hết thời gian. Và ví dụ:
$ test 1
$ echo "result = $?"
result = 0
$ test 0
$ echo "result = $?"
result = 0
Không (0) là đúng . Tại sao? Vâng, trang người đàn ông nói rằng một đối số duy nhất là ' đúng ' khi nó KHÔNG-NULL.
người giới thiệu: