In einer bestimmten Shell würde ich normalerweise eine Variable oder Variablen festlegen und dann einen Befehl ausführen. Kürzlich habe ich das Konzept kennengelernt, einem Befehl eine Variablendefinition voranzustellen:
FOO=bar somecommand someargs
Das funktioniert ... irgendwie. Es funktioniert nicht, wenn Sie eine LC_ * -Variable ändern (was den Befehl zu beeinflussen scheint, aber nicht seine Argumente, z. B. '[az]' - Zeichenbereiche) oder wenn Sie die Ausgabe folgendermaßen an einen anderen Befehl weiterleiten:
FOO=bar somecommand someargs | somecommand2 # somecommand2 is unaware of FOO
Ich kann somecommand2 auch mit "FOO = bar" voranstellen, was funktioniert, aber unerwünschte Duplikate hinzufügt, und es hilft nicht bei Argumenten, die abhängig von der Variablen interpretiert werden (zum Beispiel '[az]').
Was ist also ein guter Weg, dies in einer einzigen Zeile zu tun?
Ich denke etwas in der Größenordnung von:
FOO=bar (somecommand someargs | somecommand2) # Doesn't actually work
Ich habe viele gute Antworten bekommen! Das Ziel ist es, dies einzeilig zu halten, vorzugsweise ohne "Export" zu verwenden. Die Methode mit einem Aufruf von Bash war insgesamt am besten, obwohl die in Klammern gesetzte Version mit "Export" etwas kompakter war. Interessant ist auch die Methode, die Umleitung anstelle einer Pipe zu verwenden.
(T=$(date) echo $T)
wird funktionieren