コマンド置換構文$()は演算子またはコマンドと見なされますか?

コマンド置換構文$()は演算子またはコマンドと見なされますか?

これらの1つと呼ばれる公式文書が見つかりません。とにかく、コマンドとオペレータの技術的な違いは正確に何ですか?

答え1

POSIXのテキストは以下にリストされています。2.6 単語拡張、チルダ拡張、パラメータ拡張、算術拡張、フィールド分割、パス名拡張、引用符の削除などがあります。

繰り返しますが、Bashのマニュアルは以下にリストされています。シェル拡張

前者は「演算子」をリダイレクト演算子として使用し、、、、、なども使用するので;、そのうちの一つではありません&。明らかにそれは命令ではないので、用語がどんなに重要であっても、両方ではないと言わなければなりません。|&&||(

答え2

1つのコマンド:

  • 通常、名前には英数字文字列があります。

  • 外部ユーティリティ、組み込みツールまたは機能。この意味で、組み込み関数が出力として生成するほとんどはコマンドtypeです。

  • 持つプレフィックスシンボル。

  • 通常、ある種の入出力が変わります。

オペレーター:

  • 通常、名前はありませんが、別名を持つことができる記号文字列です。

  • 組み込み関数は理解されていませんtype(混乱した名前の関数やスクリプトがある場合を除く)。

  • より頻繁中尉またはサフィックス通事論。

  • 時には交通警察のように入出力を指示しますが、内容を変更しません。存在するそれ。

  • 時にはプロセスの順序を案内します。

$()命令です置換:

  • まず、(または表示方法に応じて最後に)文字列です。
  • 文字列はテキストで構成されます。出力そこにリストされたコマンド。

[シェル組み込みコマンドは次のとおりです。

  • test必須サフィックスが付いたコマンドです]

[[シェルキーワードですbash

  • [より一般的で高速な組み込みコマンドに似ていますが、SFAIKにはそれに対応しますtest
  • シェルキーワードは、コマンドのように見えますが、演算子のように動作し、区切り文字と構文でさまざまな兄弟キーワードを必要とするなどtimeのエントリが含まれます。forこのコードはtype出力で組み込み関数を実行し、help左側にキーワードリストと組み込み関数を表示します。

    COLUMNS=30 help -m | tail -n +9 | 
    tee >(cut -d ' ' -f2) >(cut -c 17-30 | cut -d ' ' -f1) > /dev/null | 
    sort | sed -n "s/.*/type '&'/e"';/found/!p'
    

これを音声言語と比較してください。

  • コマンド(および一部のキーワード)は動詞と同じです。
  • ファイルと文字列は名詞です。
  • 演算子は句読点や前置詞と同じです。

抽象的に、演算子は同様のコマンドで置き換えることができる他の構文を持つコマンドです。プレフィックススタイルコマンドと他のコマンド。使用が不便な場合があります。

分析的に言えば、シェルのコンパイルされたコードは逆アセンブラを介して実行でき、演算子は単なる命令であるか、むしろ一連のアセンブリ言語命令です。

答え3

ユーザーの観点から見ると、コマンドの置換はシェルの基本要素です。これは、複数のアクション(サブシェルの起動、コマンドの実行...)を実行し、値(コマンドの出力)を返すことができるシェルに実装された関数です。コマンド置換は通常、シェルが拡張を実行する前のコマンドの引数です。つまり、ユーザーはシェル機能を使用してシェルプロセスの結果を取得します。

関連情報