Bashマニュアルから
6.4 Bash条件式
条件式は、[[複合コマンドとtestおよび[組み込みコマンド]で使用されます。
式は単項またはバイナリです。単項式は、ファイルの状態を確認するためによく使用されます。文字列演算子と数値比較演算子もあります。ファイルパラメータが次のいずれかの場合予備選挙形式が/dev/fd/Nの場合は、ファイル記述子Nを確認してください。ファイルパラメータが次のいずれかの場合予備選挙 /dev/stdin、/dev/stdout、または/dev/stderrのいずれかで、それぞれファイル記述子0、1、または2を確認します。
[[ とともに使用すると、"<" および ">" 演算子は現在のロケールを使用してアルファベット順にソートされます。テストコマンドはASCIIシーケンスを使用します。
別途規定のない、予備選挙 ファイルに対して機能するファイル操作はシンボリックリンクに従い、リンク自体ではなくリンク先で機能します。
Juniorの定義
基本と運営者または運営の違いは何ですか?
答え1
前述したように、これは専門用語です。これバッシュリファレンスマニュアル用語は定義されていません。読者はこれを知っていると仮定します。
算術式のオペランドに使用されるものを簡単に見つけることができます。例を見る算術表現中Fortran 77 言語リファレンスマニュアルすなわち
主な数字は算術式の基本コンポーネントです。基本的な形式は次のとおりです。
符号なし算術定数
算術定数の記号名
算術変数参照
算術配列要素参照
算術関数リファレンス
括弧内の算術式
POSIXでは、その使用は(まだ)主に読者の用語の事前知識に依存しています。たとえば、シェルコマンド言語では、次を参照してください。find
注文する:
(たとえば、POSIX.1-2008のシステムインタフェースボリュームで定義されているexec関数の1つを使用してfindを呼び出す場合 - name Primaryの引数またはfnmatch()関数のパターン引数で)、
そして読むときそれ部分明らかに、元の数字はオペランドと同じ意味を持ちます。つまり、コマンド解析の各レベルで、コマンド(またはメインコマンド)には考慮すべきいくつかの主要な要素があり、残りは定数または変数(別名「オペランド」)だけです。
答え2
用語の使用があいまいなようです。意味するようだ
- オペレーターまたは
- ブール値を生成するために適切に 1 つまたは 2 つのオペランドと結合する演算子
引用:
これバッシュリファレンスマニュアル、部分3.2.4.2 条件付き構成、話す[[
… ]]
、言う、
...表現は、下記の基本色で構成されています。Bash条件式。 …
これはあなたの質問に引用されたかなり混乱した部分です。引き続き、、、、… 、、… 、… 、、…などをリストします。-a file
-b file
-t fd
file1 -ef file2
-z string
string1 != string2
そしてこれtest
コマンドのPOSIX仕様、部分オペランド
(このソースを識別してくれたBinaryZebraに感謝します)は、次のように言いました。
フォームの2つの要素のデフォルト選択:
-primary_operator primary_operand
と言う1ドルの予備選挙。 2 つの形式のいずれかで、3 つのコンポーネントをデフォルトで選択します。
primary_operand -primary_operator primary_operand
primary_operand primary_operator primary_operand
と言うバイナリ基本。 …
だから、どちらのソースも同意するようです。などが基本です。ただし、リファレンスマニュアルのセクション6.4では、-b file
-c file
文書-b
「raw引数」では、演算子(たとえば、、、、... -c
)を基本的に参照するようです。
答え3
短い答え(私の言葉):
テストに出てくる「単語」([[
and ]]
、 or [
and ]
)は空白で区切られ、主要な単語になります。単語は(!
)、(-f
)、または値($var
)です。最初の[
orが[[
コマンド(「テスト」)として理解されると、この単語も「引数」です。
分割後(一部) 2 つの単語が結合されます。 (-f)や($ var)と同様に、単項基本と呼ばれます。そして(一部は)3つの単語を「バイナリ基本」といいます。
ただし、この説明はあまり正確ではなく、一部の目的によって若干異なります。
より長い答え:
この概念は Bourne シェルから出てきたかなり古い概念です。これはPOSIX仕様で詳しく説明されています(例:):
オペランド
アプリケーションはすべてオペレーターそして主な要素次のようにレンダリング別の主張テストユーティリティに。
次の基本色を使用して式を整理できます。
はい表現する中かっこ内の内容を示します。[expression]
。
ここでオペランドを参照してください。そして演算子は、テストユーティリティに提供される引数(スペースで区切られた単語)です。
式の概念は、man bash
たとえば、検索時に始めの近くにも使用されます[[ expression ]]
(「複合コマンド」の形式)。
式は次の部分で構成されます。予備選挙以下では条件式で説明する。
条件付き演算子(例:-f)は、主演算子として認識されるように引用符を解除する必要があります。
決定的な
最後に、上記のリンクされたPOSIX仕様ページで検索できます。またここにこの行(および下の行)の場合:
2種類の要素を持つ基本要素を
-primary_operatorprimary_operandと呼びます。
1ドルの予備選挙。
次の行は、最大4つの引数(スペースで区切られた単語、ここから始まる)を含む式を使用して基本色を定義しようとしています。
4単語基本単語はありません(!
(否定)3単語基本単語の一部として計算されていない場合)。
POSIXの説明は、開発者が組み込んだ多くの極端なケースでは正しく機能しません[[ ]]
。
答え4
からman bash
:
この
Compound Commands
セクションの:表現は構成する元の選択は、以下の条件式で説明されています。 (1)
ホームフレーズオペレーターたとえば、-fをデフォルトとして認識するには、引用符を解く必要があります。 (2)
次の演算子を使用して式を結合できます。 [...] (リストは続きます: ( ), !, && および ||) [...] && および ||演算子は評価されません。式2値がある場合式1十分に決定的な戻り値全条件式。 (サム)
この
CONDITIONAL EXPRESSIONS
セクションの:表現は形成次の単項またはバイナリ基本色から来ます。 (4)
もしそうならファイルパラメータ予備選挙の一つ [...] (5)
特に明記しない限り、予備ファイルに対する操作の実行[...](6)
私達はこれをこう理解できます:
(1)と(4)では、基本は次のとおりです。条件式の最も小さく自律的な要素、例えば、、、、、
-a FILE
…は単項または二項に関連していFILE1 -nt FILE2
ますSTRING
。-n STRING
STRING1 == STRING2
オペレーター。
(2)(及び(4)、(5)及び(6))において、拡張すると、演算子自体を「デフォルト」として指定できます。、関連するオペランドと一緒に発生することを理解しています。(「コマンド」と同様に、組み込みユーティリティまたはプログラムを指定するか、適切な引数を使用してこのユーティリティまたはプログラムに書き込まれたコマンドラインを指定できます。)
そして(1)と(3)によってルディメントは、より複雑な条件式を形成するために組み合わせることができる最小のモジュールです。たとえば、-a FILE && FILE1 -nt FILE2
&&(AND)演算子を使用し、-n STRING || STRIN1 == STRING2
||(OR)演算子! STRING
と!(not)演算子を使用します。