La
substitution de commandes permet de remplacer le nom d'une commande par son résultat. Il en existe deux formes :
$(commande) ou
`commande`
Bash effectue la substitution en exécutant la
commande et en la remplaçant par sa sortie standard, dont les derniers sauts de lignes sont supprimés. Les sauts de lignes internes ne sont pas supprimés mais peuvent disparaître lors du découpage en mots. La substitution de commande
$(cat fichier) peut être remplacée par l'équivalent plus rapide
$(< fichier).
Quand l'ancienne forme de substitution avec les backquotes ` est utilisée, le caractère antislash garde sa signification littérale, sauf s'il est suivi de
$,
`, ou
\. La première backquote non protégée par un antislash termine la substitution de commande. Quand on utilise la forme $(
commande), tous les caractères entre parenthèses gardent leurs valeurs littérales. Aucun n'est traité spécialement.
Les substitutions de commandes peuvent être imbriquées. Avec l'ancienne forme, il faut protéger les backquotes internes avec un backslash.
Si la substitution apparaît entre guillemets, le découpage des mots, et l'expansion des noms de fichiers ne sont pas effectués.
Partager