ではbash
、すべての変数、基本的に文字列(または配列または機能が、ここでは通常の変数についてのletの話)です。
条件は、テストコマンドの戻り値に基づいて解析されます。戻り値は変数ではなく、終了状態です。あなたが評価した場合if [ ... ]
またはif [[ ]]
またはif grep something
またはそのような何かが、戻り値0(文字列ではありません0しかし、終了ステータス0 =成功)が真と残りの平均偽(意味ので、あなたがコンパイルされたプログラミング言語のに使用されているものとは全く逆の、しかし、成功する1つの方法と失敗する多くの方法があり、実行の期待される結果は通常成功であるため、何も問題がなければ、最も一般的なデフォルト結果として0が使用されます)。これは、任意のバイナリをテストとして使用できるため、非常に便利です。失敗した場合はfalse、それ以外の場合はtrueです。
true
そしてfalse
プログラムは、(通常は組み込みコマンドによって上書き)何もしないだけで便利な小さなプログラムです- true
何もしないで成功し、0で終了し、一方、false
試行は何もしないし、「失敗」、1音でexitting無意味が、それは、スクリプトのために非常に便利です。
真実を完全に伝える方法については、あなた次第です。真実と使用のために「y」または「yes」を使用することは非常に一般的ですif [ x"$variable" = x"yes" ]
(長さがゼロの場合、解析しない偽のコマンドを作成しないx
ようにダミー文字列を追加します)。これは、単に空の偽の文字列、および使用を使用することが有用であり得る(またはそれが長さゼロだかどうかをテストするためにそれが非ゼロであるために)。$variable
if [ = "yes" ]
[ -z "$variable ]
-n
とにかく、それは実際に周りのブール値を渡す必要があることは非常にまれだbash
、それははるかに共通の単純だ- exit
ことができます失敗した場合、または有用な結果を返す(何かがうまくいかない場合はゼロを、そして空の文字列のための試験)、およびほとんどの場合出口ステータスから直接障害をテストします。
あなたのケースでは、他のコマンドとして機能する関数が必要です(したがって、成功すると0を返します)ので、最後のオプションが正しい選択のようです。
また、return
声明さえ必要ないかもしれません。関数が十分に単純な場合、関数内で最後に実行されたコマンドのステータスを単に返すという事実を使用できます。したがって、関数は単純に
drive_xyz_available() {
[ -e /dev/disk/by-uuid/whatever ]
}
(やgrepは、デバイスノードの存在をテストしている場合/proc/mounts
、それはのマウントかどうかを確認するには?)。
help true ; help false ; help exit