![「man test」の「[EXPRESSION]、[]、および[OPTION」はどういう意味ですか?](https://linux33.com/image/71408/%E3%80%8Cman%20test%E3%80%8D%E3%81%AE%E3%80%8C%5BEXPRESSION%5D%E3%80%81%5B%5D%E3%80%81%E3%81%8A%E3%82%88%E3%81%B3%5BOPTION%E3%80%8D%E3%81%AF%E3%81%A9%E3%81%86%E3%81%84%E3%81%86%E6%84%8F%E5%91%B3%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F.png)
確認してみると、man test
シノプシスに来る可能性があることが確認されましたtest
。test EXPRESSION
test
次はどういう[ 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
最新のシェルバージョンには必要です。。