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
Abonnement
tous les livres et vidéos ENI en illimité sans engagement
du livre imprimé ou du livre numérique