`[テスト]]、[]、および[オプション]は、`人間テスト `で何を意味しますか?


8

調べるとman test、私は概要の下でことを見るtest可能性があるtest EXPRESSIONtest

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

括弧が空で、括弧がないのはなぜ[OPTIONですか?誰かがこれを私のために解釈できますか?

NAME
       test - check file types and compare values

SYNOPSIS
       test EXPRESSION
       test

       [ EXPRESSION ]
       [ ]
       [ OPTION

回答:


10

[ある別の名前のためにtest。これらの3行はすべてtest、いくつかのオプションを指定して実行されるコマンド行です。

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

2番目では、式が省略されています。これは、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/\[に注意してください。


4

[test一部のシェルに組み込まれているシェルと同じです。

さらに下を見ればman test、それはEXPRESSIONあなたがテストできる有効なものを説明しています:

省略されたEXPRESSIONのデフォルトはfalseです。それ以外の場合、EXPRESSIONはtrueまたはfalseで、終了ステータスを設定します。次のいずれかです...

これは、マンページから、あなたには明らかではないかもしれないが、古い/いくつかの他のシェルでは、両方[とは、testあなたが見空間を意味し、実際のコマンドとして用意されてい[ EXPRESSION ]ている必須のためEXPRESSIONとして受け入れられるために、引数のために[/ test。したがって、組み込みとして提供するシェルであっても、互換性のためにこの形式を保持します。

そして、私がこれを入力している間の@ dr01の回答で説明されているように、右角括弧はオプションです。


@don_crisstiヘッズアップありがとうございます。最後の文は省略します...
hjk

0

[ OPTION ブラケットが本当に欠けていません。

実際、おそらく驚くべきことに、[/usr/bin/[同等のコマンド(にあります)ですtest。したがって、(少なくとも理論的には)左角かっこだけを使用することが許可され、右角かっこは構文糖衣としての役割も果たします。ただし、新しいシェルバージョンでは必要です


これらにはtest、オプションで使用できない(その可能性についてはリストされていない)違いがありますか?
Shuzheng 2015

1
POSIXでもGNUでも、右括弧を省略することはできません[
Michael Homer

@MichaelHomerはい。修正。
dr_

Bashがこれとどう関係しているのかわからない...
Michael Homer

1
@ MichaelHomer、POSIXでは、右角かっこを省略した場合の動作が指定されていないため、POSIX スクリプトはを省略できません]が、POSIX [は、名前の呼び出しやマシンの再起動、ヘルプメッセージの出力など、必要な処理を実行できます。あなたがそれなしでそれを呼び出す場合。それはGNUことができますgrep[ --versiontest --versionそして[ --version ]しかし真(のためのテスト戻すために必要とされる--version非空の文字列である)と、出力何も。
ステファンChazelas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.