Saya sendiri memiliki hasil yang bertentangan di bidang ini. Ini adalah hasil dari eksperimen empiris saya. Pertama, beberapa ' teori ' tentang perintah bash atau * nix:
- SUKSES == 0 ... yaitu. tidak ada kode status kesalahan)
- GAGAL! = 0 ...... beberapa kode status
Contoh:
if ls -lt /nonexistantdir
then
echo "found"
else
echo "FAIL"
fi
#
echo
ls -lt /nonexistantdir; echo "status = $?"
echo "status = $?"
Keluaran:
ls: cannot access '/nonexistantdir': No such file or directory
FAIL...
ls: cannot access '/nonexistantdir': No such file or directory
status = 2
Seperti yang ditunjukkan, ls
perintah mengembalikan kode status = 2. Ketika Anda mencoba direktori yang valid, statusnya nol ( 0 ). Tidak sama dengan hampir semua bahasa lainnya.
aturan # 1 - Buat ...
Kita harus ingat bahwa kita sedang menguji kode kesalahan dalam if
pernyataan Bash . Saya mengatur konstanta, atau Anda dapat menggunakan shell true
atau false
perintah.
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
dan output:
Invalid Number
Not lucky.
Namun, saya sarankan Anda memberikan @Gilles ' suara-up ' karena jawabannya adalah yang benar. Saya hanya ingin mendapatkan sisi yang simpel pada ePaper.
Hanya satu hal lagi, test
perintah. Ini terlihat seperti:
[[ some-expression ]];
Sebagian besar waktu. Dan misalnya:
$ test 1
$ echo "result = $?"
result = 0
$ test 0
$ echo "result = $?"
result = 0
Nol (0) benar . Mengapa? Halaman manual mengatakan bahwa satu argumen adalah ' benar ' ketika itu TIDAK-NULL.
referensi: