Bashでコマンドの前に変数を設定するのが正当な理由は何ですか?

Bashでコマンドの前に変数を設定するのが正当な理由は何ですか?

私は次のようないくつかの答えを見つけました。区切られたテキストファイルを解析しています...次の構造を使用してください。

while IFS=, read xx yy zz;do
    echo $xx $yy $zz
done < input_file

ここでIFS変数はコマンドの前に設定されますread

私は読んでいたバッシュリファレンスしかし、これがなぜ正当なのか理解していません。

頑張った

$ x="once upon" y="a time" echo $x $y

bashコマンドプロンプトからエコーを受け取りません。誰かがこの構文を参照で定義し、IFS変数をこのように設定できるように指示できますか?これは特別なケースですか?それとも他の変数にも同様のことができますか?

ベストアンサー1

関連情報は以下で確認できます。マニュアルページBASH管理者が提供しました(最後の確認:2020年8月)。シェル構文セクション、単純なコマンド状態(強調追加):

簡単なコマンドはオプションの変数割り当て順序 その後の空間分離 単語とリダイレクト、制御演算子によって終了します。これ最初の単語実行するコマンドを指定し、引数0に渡されます。残りの単語は、呼び出されたコマンドに引数として渡されます。

したがって、希望の変数を渡すことができます。echo変数はシェルで設定されず、コマンドに渡されるため、例は機能しません。殻が膨張し$x$y 今後コマンドを呼び出します。たとえば、次のように動作します。

$ x="once upon" y="a time" bash -c 'echo $x $y'
once upon a time

おすすめ記事