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ị, ls
lệ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 if
câu lệnh Bash . Tôi thiết lập các hằng, hoặc bạn có thể sử dụng shell true
hoặc false
cá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, test
lệ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: