質問
gnuwin32 / binディレクトリを見ると、 [。exe
ドキュメント、gnuwin32.sourceforge.net、またはGoogle検索で見つけることができなかったので、実行して取得しました:
$ [
[: missing `]'
$
だから私はそれをパラメータとして与えて、得た
$ [ ]
$
文句は言わなかったので、正しい軌道に乗っていると思いました。試しました:
$ [ hello ]
再び、苦情はありません。だから私は算術式を試しました:
$ [ 1 + 1 ]
[: +: binary operator expected
$
プレフィックス&など、さまざまな組み合わせを試しました。後置記法ですが、何も機能していないようです。このことは何をしますか?
解決
条件付き式の評価に使用されます。
test
実行可能ファイルと同等です(おそらくシンボリックリンクですか?)。
マンページはこちらです。
これは多くのbashスクリプトで見ることができます:
if [ "$LOGNAME" = "scott" ]
then
echo "Logged in as Scott"
else
echo "incorrect user"
fi
おもしろいことに、 [
はbash言語の一部ではなく、実際には戻りコードが「IF」によって使用される実行可能ファイルです。これが、 [
とその最初の引数の後のスペースが必須である理由です-省略した場合、スクリプトは [ " $ LOGNAME"
と失敗します。
算術演算を使用することはできません-そのためには expr
を使用します(こちら)。
ただし、文字列と数値で比較演算子を使用するだけでなく、幅広いファイルプロパティ(存在するか、どのタイプかなど)をテストできます。
他のヒント
test a
==
[ a ]
砂糖だけです
編集:明確にするために、それは条件付き構文です。 [" a" =" a" ]
既に述べた別の答えは、 test
と同じです。 bashではビルトインでもあるため、 help
ビルトイン( help test
)でヘルプを取得できます。