7

bash と入力すると、結果として文字列が表示されるのはなぜif [ false ]; then echo 'ok'; fi;ですかok? 変数を使用した場合にも得られる同様の結果:ok=false; if [ $ok ]; then echo 'ok'; fi;

4

2 に答える 2

10

if [ false ]と同等ですif [ -n "false" ]- 文字列の長さをテストしています。の終了コードをテストしようとしている場合は/bin/falseif false(no 。すべてではありませんが、多くの最新のシェルでは、または[とほぼ同等のシェル ビルトインです) を使用します。/usr/bin/[/usr/bin/test

于 2012-11-08T17:31:33.943 に答える
3

trueまたfalse、他のプログラミング言語の場合と同じように、bash の boolean の組み込みキーワードではありません

次のように、変数の true / false 条件のテストをシミュレートできます。

cond1="true"
cond2="false"

if [ "$cond1" = "true" ]; then
    echo "First condition is true"
fi

if [ "$cond2" = "false" ]; then
    echo "Second condition is false"
fi

あなたがしているとき:

if [ false ]

暗黙的に変換されます

if [ -n "false" ]

は、-n「これの長さが 0 より大きいかどうかをテストします。そうであれば論理的に true、それ以外の場合は論理的に false」を示します。

脇に -true実際falseに何かをしますが、それらはコマンドです:

man true
man false

それらについてもっと読むために。

于 2012-11-08T17:34:57.230 に答える