En un shell dado, normalmente establecería una variable o variables y luego ejecutaría un comando. Recientemente aprendí sobre el concepto de anteponer una definición variable a un comando:
FOO=bar somecommand someargs
Esto funciona ... más o menos. No funciona cuando está cambiando una variable LC_ * (que parece afectar el comando, pero no sus argumentos, por ejemplo, '[az]' rangos de caracteres) o cuando canaliza la salida a otro comando de esta manera:
FOO=bar somecommand someargs | somecommand2 # somecommand2 is unaware of FOO
También puedo anteponer somecommand2 con "FOO = bar", que funciona, pero que agrega duplicación no deseada, y no ayuda con argumentos que se interpretan dependiendo de la variable (por ejemplo, '[az]').
Entonces, ¿cuál es una buena manera de hacer esto en una sola línea?
Estoy pensando en algo del orden de:
FOO=bar (somecommand someargs | somecommand2) # Doesn't actually work
¡Tengo muchas buenas respuestas! El objetivo es mantener esto de una línea, preferiblemente sin usar "exportar". El método que utiliza una llamada a Bash fue el mejor en general, aunque la versión entre paréntesis con "exportar" era un poco más compacta. El método de utilizar la redirección en lugar de una tubería también es interesante.
(T=$(date) echo $T)
funcionará