Dans un shell donné, normalement je définirais une ou plusieurs variables, puis exécuterais une commande. Récemment, j'ai découvert le concept de l'ajout d'une définition de variable à une commande:
FOO=bar somecommand someargs
Cela fonctionne ... en quelque sorte. Cela ne fonctionne pas lorsque vous modifiez une variable LC_ * (qui semble affecter la commande, mais pas ses arguments, par exemple, les plages de caractères '[az]') ou lorsque vous redirigez la sortie vers une autre commande:
FOO=bar somecommand someargs | somecommand2 # somecommand2 is unaware of FOO
Je peux également ajouter une commande2 à "FOO = bar", ce qui fonctionne, mais qui ajoute une duplication indésirable, et cela n'aide pas avec les arguments qui sont interprétés en fonction de la variable (par exemple, '[az]').
Alors, quelle est la bonne façon de le faire sur une seule ligne?
Je pense à quelque chose de l'ordre de:
FOO=bar (somecommand someargs | somecommand2) # Doesn't actually work
J'ai eu plein de bonnes réponses! Le but est de garder cette ligne unique, de préférence sans utiliser "d'export". La méthode utilisant un appel à Bash était globalement la meilleure, bien que la version entre parenthèses avec "export" soit un peu plus compacte. La méthode d'utilisation de la redirection plutôt que d'un tuyau est également intéressante.
(T=$(date) echo $T)
fonctionnera