В данной оболочке обычно я устанавливаю переменную или переменные и затем запускаю команду. Недавно я узнал о концепции добавления определения переменной к команде:
FOO=bar somecommand someargs
Это работает ... вроде. Это не работает, когда вы изменяете переменную LC_ * (которая, кажется, влияет на команду, но не на ее аргументы, например, '[az]' char char)) или когда таким образом передается вывод в другую команду:
FOO=bar somecommand someargs | somecommand2 # somecommand2 is unaware of FOO
Я также могу добавить к некоторой команде2 "FOO = bar", которая работает, но добавляет нежелательное дублирование и не помогает с аргументами, которые интерпретируются в зависимости от переменной (например, '[az]').
Итак, что хорошего способа сделать это в одной строке?
Я думаю что-то порядка:
FOO=bar (somecommand someargs | somecommand2) # Doesn't actually work
Я получил много хороших ответов! Цель состоит в том, чтобы сохранить это в одну строку, желательно без использования «экспорта». Метод, использующий вызов Bash, был лучшим в целом, хотя версия в скобках с «экспортом» была немного более компактной. Интересен также способ использования перенаправления, а не канала.
(T=$(date) echo $T)
будет работать