私はbashで簡単な計算をしていますが、計算結果がゼロの場合はexpr
を使用したbash計算がです。結果が0の場合、bash計算では1が返されるのはなぜですか?
[email protected]:~$ expr 42 - 40 ; echo $?
2
0
[email protected]:~$ expr 42 - 84 ; echo $?
-42
0
[email protected]:~$ expr 42 - 42 ; echo $?
0
1
なぜbashがこれを行うのですか?戻り値は、プログラムが失敗したことを示していますか?この行動は良い習慣に違反しないのですか?
set -e
で実行されるスクリプト内でいくつかの計算を行っています。 1の戻り値を考慮する最も良い方法は何ですか? 私は
expr $var1 - $var2 || true
を行うことができますが、これはまた以外の終了コードを無視します。
'男expr'であるかどうかをチェックすることで、真偽をブールとは対照的に、あなたはまだ、実際のエラーを検出することができます
注:_Exitステータスが0でありますEXPRESSIONがヌルでも0でもない場合は、EXPRESSIONがNULLまたは0の場合は1、構文的に無効な場合は2、エラーが発生した場合は3です。また、算術演算には 'expr'を使用しないでください。 –
httpも参照してください。 ://unix.stackexchange.com/questions/63166/bash-e-exits-when-let-or-expr-evaluates-to-0 – Roland
私はこの質問を議論の対象外としています。まずmanページを読んでください。 –