В данной оболочке, как правило, я бы установил переменную или переменные, а затем запустил команду. Недавно я узнал о концепции добавления определения переменной в команду:
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, был лучшим в целом, хотя скобковая версия с "export" в нем была немного более компактной. Интересен также метод использования перенаправления, а не трубы.