端末でこれを入力すると
test 4 -lt 6
出力がありません。何故なの? 0か1が必要です
終了コードで0または1を取得します。
bash-4.2$ test 4 -lt 6
bash-4.2$ echo $?
0
bash-4.2$ test 4 -gt 6
bash-4.2$ echo $?
1
pdate:後で使用できるように終了コードを保存するには、単に終了コードを変数に割り当てます。
bash-4.2$ test 4 -lt 6
bash-4.2$ first=$?
bash-4.2$ test 4 -gt 6
bash-4.2$ second=$?
bash-4.2$ echo "first test gave $first and the second $second"
first test gave 0 and the second 1
別の方法は
test 4 -lt 6 && echo 1 || echo 0
ただし、その場合は注意してください。 test
が成功を返し、echo 1
失敗echo 0
が実行されます。
次のコマンドを入力できます。
echo $(test -e myFile.txt) $?
終了コードの代わりに標準出力の比較結果が必要な場合は、expr(1)
コマンドを使用できます。
$ expr 4 '<=' 6
1
注意すべき2つの点:
test
の戻りコードの反対です。 test
はtrue(終了コードの標準)の場合は0を返しますが、expr
はtrueの場合は1を出力します。