私自身、この分野で相反する結果がありました。これが私の経験的実験の結果です。まず、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を返します。有効なディレクトリを試行すると、ステータスはzero(0)になります。他のほとんどすべての言語と同じではありません。
ルール#1-作成 ...
Bash ステートメントでエラーコードをテストしていることを忘れないでif
ください。定数を設定したり、シェル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.
しかし、彼の答えは正しいので、「賛成票」@Gilles を与えることをお勧めします。私はePaperの単純化した側面を取り除きたかっただけです。
もう1つ、test
コマンドです。これは次のようになります。
[[ some-expression ]];
ほとんどの時間。そして例えば:
$ test 1
$ echo "result = $?"
result = 0
$ test 0
$ echo "result = $?"
result = 0
Zero(0)はtrueです。どうして?まあ、manページでは、NOT-NULLの場合、単一の引数は「true」であると述べています。
参照: