環境変数割り当て後のコマンド [冗長]

環境変数割り当て後のコマンド [冗長]

次のbash注文では、正確に何が起こっていますか?

x=10 echo $x

私の考えでは、bashのコマンドは、またはを使用して接続できますが、&&単にスペースで区切ることはできません。上記は、最初のコマンドが割り当ての場合にのみ機能します。たとえば失敗しましたが、うまくいきました。||;ls lsfoo=zoo ls

上記のスタイルの実際の例は以下にあります。この回答

答え1

これは、変数セットを使用してコマンドを呼び出すために使用される特殊な構文構造です。これは、変数の範囲がそのコマンドに制限されることを意味します。

たとえば、次のコマンドは次のようになります。

x=10 sh -c 'echo $x'

他のコマンドとまったく同じです。

( export x=10; sh -c 'echo $x' )

提供された例()は、変数が呼び出し前に評価されるため、x=10 echo $xこの構成に適した例ではありません。$xecho

答え2

これを行うとき:

var=value command

var=valueコマンド環境に文字列を渡しました。この環境は、コマンドの実行時に使用されます。

~からbash環境文書:

単純なコマンドまたは機能の環境は、パラメータの割り当てを先に追加することで一時的に改善できます。、シェルパラメータで説明されているように。これらのディレクティブは、コマンドで表示される環境にのみ影響します。

ただし、お客様の場合、このコマンドは機能しません。なぜなら:

  • ほとんどのシェルでは、echoこれは組み込み関数なので実行されません。
  • $xシェルに拡張されました。

答え3

コマンド資産変数xは、シェルで設定するのではなく、実行中の特定のコマンドの値です。言い換えれば、地域の仕事です。

これを使用して、コマンドの既存の変数を設定または変更できます。

私が使用した他の用途は次のとおりです。

http_proxy=myproxy wget http://myurl

これにより、シェルのデフォルトのプロキシ設定を変更せずに、特定のURLの特定のプロキシが設定されます。

LANG=C sort file

特定の言語設定に従ってファイルをソートしますが、その特定の実行にのみ適用されます。

関連情報