Em um determinado shell, normalmente eu definiria uma variável ou variáveis e depois executaria um comando. Recentemente, aprendi sobre o conceito de anexar uma definição de variável a um comando:
FOO=bar somecommand someargs
Isso funciona ... mais ou menos. Não funciona quando você está alterando uma variável LC_ * (que parece afetar o comando, mas não seus argumentos, por exemplo, intervalos de caracteres '[az]') ou quando canaliza a saída para outro comando da seguinte maneira:
FOO=bar somecommand someargs | somecommand2 # somecommand2 is unaware of FOO
Também posso acrescentar um comando2 com "FOO = bar", o que funciona, mas adiciona duplicação indesejada e não ajuda com argumentos interpretados dependendo da variável (por exemplo, '[az]').
Então, qual é uma boa maneira de fazer isso em uma única linha?
Estou pensando em algo da ordem de:
FOO=bar (somecommand someargs | somecommand2) # Doesn't actually work
Eu tenho muitas respostas boas! O objetivo é manter essa linha única, de preferência sem usar "exportação". O método usando uma chamada para o Bash foi o melhor em geral, embora a versão entre parênteses com "exportação" fosse um pouco mais compacta. O método de usar o redirecionamento em vez de um canal também é interessante.
(T=$(date) echo $T)
funcionará