Sommaire

Substitution de commandes

La substitution de commandes consiste à récupérer la sortie d’une commande sur la ligne de commande. Les sorties de commandes peuvent alors être utilisées pour l’affectation d’une variable ou comme argument d’une autre commande.

Le shell effectue les substitutions de commandes avant d’interpréter la ligne de commande dans son intégralité.

La syntaxe classique d’une substitution de commandes utilise l’apostrophe inverse (ou accent grave, ou "back quote") obtenue avec la combinaison de touches [AltGr]+[7] sur un clavier français :

[nicolas]$ whoami 
nicolas 
[nicolas]$ echo "mon login est `whoami`" 
mon login est nicolas 
[nicolas]$ monlogin=`whoami` 
[nicolas]$ echo "mon login est $monlogin" 
mon login est nicolas

L’avantage d’affecter la sortie d’une commande à une variable est de pouvoir réutiliser plusieurs fois ce résultat en n’ayant évalué qu’une seule fois la commande.

La seconde syntaxe admise pour la substitution de commandes est $(). L’avantage de cette syntaxe est de pouvoir imbriquer les substitutions de commandes :

[nicolas]$ echo "contenu de mon répertoire : $(ls /home/$(whoami))" 
contenu de mon répertoire : blanc 
bleu 
jaune 
marron 
rouge 
vert 
violet