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