「man test」の「[EXPRESSION]、[]、および[OPTION」はどういう意味ですか?

「man test」の「[EXPRESSION]、[]、および[OPTION」はどういう意味ですか?

確認してみると、man testシノプシスに来る可能性があることが確認されましたtesttest EXPRESSIONtest

次はどういう[ EXPRESSION ], [ ] and [OPTION意味ですか?

かっこはなぜ空で、[OPTION括弧がないのですか?誰かが私にこれを説明できますか?

NAME
       test - check file types and compare values

SYNOPSIS
       test EXPRESSION
       test

       [ EXPRESSION ]
       [ ]
       [ OPTION

答え1

[はい他の名前のためのtest。 3行すべてがtestいくつかのオプションを含むコマンドラインです。

最初の行は標準テストです。[ 5 -gt 4 ]と同じですtest 5 -gt 4

第二に、式は省略されました。これはfalseが終了することを意味します(0 arguments: Exit false (1))。

3番目のケースでは、GNU coreutilsを使用しているようです。 GNUのtestヘルプテキストには、次の説明が含まれています。

NOTE: [ honors the --help and --version options, but test does not.
test treats each of those as it treats any other nonempty STRING.

これは非POSIX拡張test;これらのパラメータを他のパラメータと同様に文字列として扱うことを意図しているようです。[閉じ括弧の存在によってオプションケースと文字列ケースを区別する機能]

シェルはそれ自体を提供できるため、このバージョンを使用する必要が[あります。/bin/\[

答え2

[test一部のシェルのシェル組み込みコマンドと同じです。

より詳しく見ると、man test効果的にテストできる内容が説明されています。EXPRESSION

省略されたEXPRESSIONのデフォルト値はfalseです。それ以外の場合、EXPRESSION は true または false で終了状態が設定されます。次のいずれかです。

マニュアルページでは不明ですが、前/一部の他のシェルでは、両方とも実際のコマンドとして[使用できますtest。つまり、表示されるスペースは次のとおりです[ EXPRESSION ]必須EXPRESSIONとして受け入れられるためにディスカッションのための[/ test。したがって、これを組み込みとして提供するシェルの場合でも、互換性のためにこの形式を維持します。

説明したようにこんにちはこの回答を入力したときに閉じた角かっこはオプションでした。

答え3

[ OPTION実際にかっこが足りないわけではありません。

実際に驚くべきことに、同等の[コマンド(位置)があります。したがって、(理論的には)左括弧のみを使用することが許可され、右括弧は構文砂糖として使用されます。しかし、/usr/bin/[test最新のシェルバージョンには必要です。

関連情報