端末にこれを入力すると
test 4 -lt 6
私は何の結果も得られません。なぜできないの? 0または1が必要です。
答え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
修正する:後で使用するために終了コードを保存するには、変数に割り当てます。
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
答え2
別の方法は
test 4 -lt 6 && echo 1 || echo 0
しかし、この場合は注意してください。test
成功が返されると、実行は失敗しますecho 1
。echo 0
答え3
終了コードの代わりに標準出力で比較結果を表示するには、次のexpr(1)
コマンドを使用できます。
$ expr 4 '<=' 6
1
2つの点に注意してください。
- 多くの部分がシェルメタ文字と衝突するため、引用演算子が必要になる場合があります。
- 出力値は戻りコードとは反対です
test
。test
0を返す場合はtrue(終了コードの標準)を意味しますが、expr
1を印刷するとtrueを意味します。
答え4
次のコマンドを入力できます。
echo $(test -e myFile.txt) $?