特定のシェルでは、通常、1つまたは複数の変数を設定してから、コマンドを実行します。最近、コマンドの前に変数定義を追加する概念について学びました。
FOO=bar somecommand someargs
これはうまくいきます...ちょっと。LC_ *変数を変更する場合(コマンドには影響するようですが、引数には影響しません。たとえば、'[az]' char範囲)、または出力を別のコマンドにパイプする場合は機能しません。
FOO=bar somecommand someargs | somecommand2 # somecommand2 is unaware of FOO
somecommand2の前に"FOO= bar"を追加することもできます。これは機能しますが、不要な重複が追加され、変数に応じて解釈される引数(たとえば、'[az]')には役立ちません。
それで、これを単一の行で行うための良い方法は何ですか?
私は次のオーダーで何かを考えています:
FOO=bar (somecommand someargs | somecommand2) # Doesn't actually work
良い答えがたくさんありました!目標は、できれば「エクスポート」を使用せずに、これをワンライナーに保つことです。Bashの呼び出しを使用する方法は全体的に最適でしたが、「エクスポート」が含まれる括弧付きのバージョンはもう少しコンパクトでした。パイプではなくリダイレクトを使用する方法も興味深いものです。