Unix / Linux - Substitutions de Shell

Bonjour, futurs programmeurs ! Aujourd'hui, nous allons plonger dans le monde fascinant des substitutions de Shell sous Unix et Linux. Ne vous inquiétez pas si vous êtes nouveaux en programmation - je vais vous guider pas à pas à travers ce sujet, comme j'ai fait pour des centaines d'étudiants au fil des ans. Alors, mettons-nous en route pour cette aventure passionnante !

Unix / Linux - Shell Substitutions

Qu'est-ce que la Substitution ?

Avant de rentrer dans les détails, comprenstons ce que signifie la substitution dans le contexte de la programmation Shell.

La substitution est comme un tour de magie dans le shell. C'est lorsque le shell remplace un morceau de texte par un autre avant d'exécuter une commande. Imaginez que vous cuisinez un gâteau et que la recette appelle "1 tasse de sucre". Mais vous n'avez plus de sucre ! Alors, vous décidez d'utiliser du miel à la place. C'est essentiellement ce que fait la substitution - elle remplace un ingrédient (ou dans notre cas, un morceau de texte) par un autre.

Dans la programmation Shell, nous avons trois types principaux de substitutions :

  1. Substitution de Commande
  2. Substitution de Variable
  3. Substitution Arithmétique

Nous nous concentrerons sur les deux premiers dans ce tutoriel. Commençons par la Substitution de Commande !

Substitution de Commande

Qu'est-ce que la Substitution de Commande ?

La substitution de commande est une fonctionnalité qui vous permet d'utiliser la sortie d'une commande comme argument pour une autre commande. C'est comme avoir un assistant utile qui exécute une commande pour vous et puis chuchote le résultat à votre oreille, que vous pouvez utiliser dans votre commande principale.

Comment effectuer une Substitution de Commande ?

Il y a deux façons d'effectuer une substitution de commande :

  1. En utilisant des backticks (`)
  2. En utilisant la syntaxe $() (méthode préférée)

Regardons quelques exemples pour mieux comprendre cela.

Exemple 1 : Utilisation des backticks

current_date=`date`
echo "Aujourd'hui est : $current_date"

Lorsque vous exécutez ce script, il affichera quelque chose comme :

Aujourd'hui est : Lun Mai 15 10:30:45 EDT 2023

Que s'est-il passé ici ? Le shell a exécuté la commande date, capturé sa sortie, et puis utilisé cette sortie comme valeur pour la variable current_date.

Exemple 2 : Utilisation de la syntaxe $()

files_count=$(ls | wc -l)
echo "Il y a $files_count fichiers dans le répertoire courant."

Ce script comptera le nombre de fichiers dans le répertoire courant et affichera quelque chose comme :

Il y a 15 fichiers dans le répertoire courant.

Dans cet exemple, le shell exécute d'abord la commande ls pour lister tous les fichiers, redirige (|) cette sortie vers wc -l qui compte les lignes, et puis affecte le résultat à la variable files_count.

Pourquoi utiliser la Substitution de Commande ?

La substitution de commande est incroyablement utile lorsque vous avez besoin d'utiliser le résultat d'une commande comme partie d'une autre commande ou pour l'affecter à une variable. C'est comme avoir un couteau suisse dans votre boîte à outils de programmation !

Substitution de Variable

Passons maintenant à la Substitution de Variable. C'est une autre fonctionnalité puissante qui vous permet d'utiliser la valeur d'une variable dans vos scripts.

Qu'est-ce que la Substitution de Variable ?

La substitution de variable est lorsque le shell remplace un nom de variable par sa valeur. C'est comme avoir un surnom pour quelqu'un - lorsque vous utilisez leur surnom, tout le monde sait que vous vous référez à cette personne.

Comment effectuer une Substitution de Variable ?

Pour effectuer une substitution de variable, vous utilisez simplement le nom de la variable précédé d'un signe dollar ($).

Exemple 1 : Substitution de Variable de Base

name="Alice"
echo "Bonjour, $name !"

Sortie :

Bonjour, Alice !

Ici, le shell a remplacé $name par sa valeur, "Alice".

Exemple 2 : Utilisation des accolades

Parfois, vous avez besoin d'utiliser des accolades {} pour clairement définir où le nom de la variable se termine.

fruit="apple"
echo "J'aime les ${fruit}s"

Sortie :

J'aime les apples

Sans les accolades, le shell chercherait une variable nommée fruits, qui n'existe pas.

Techniques de Substitution de Variable Avancées

Regardons quelques techniques plus avancées :

1. Valeurs par Défaut

Vous pouvez fournir une valeur par défaut pour une variable si elle n'est pas définie :

echo "Bonjour, ${name:-Monde} !"

Si name n'est pas défini, il affichera :

Bonjour, Monde !

2. Assigner une Valeur par Défaut

Vous pouvez assigner une valeur par défaut à une variable si elle n'est pas définie :

echo "Bonjour, ${name:=Monde} !"
echo $name

Sortie :

Bonjour, Monde !
Monde

3. Afficher une Erreur si Non Défini

Vous pouvez afficher un message d'erreur si une variable n'est pas définie :

echo "Bonjour, ${name:?'Nom non défini'}"

Si name n'est pas défini, il affichera une erreur :

bash: name: Nom non défini

Voici un tableau résumant ces techniques avancées :

Syntaxe Description Exemple
${var:-word} Si var est null ou non défini, word est substitué. ${name:-Monde}
${var:=word} Si var est null ou non défini, var est défini à word. ${name:=Monde}
${var:?message} Si var est null ou non défini, message est affiché sur stderr. ${name:?'Nom non défini'}
${var:+word} Si var est défini, word est substitué. Sinon, rien n'est substitué. ${name:+Bonjour}

N'oubliez pas, la pratique rend parfait ! N'ayez pas peur d'expérimenter avec ces substitutions dans vos propres scripts. C'est comme apprendre à faire du vélo - cela peut sembler compliqué au début, mais une fois que vous avez pris l'habitude, vous serez rapidement en train de rouler sans problème !

En conclusion, les substitutions de shell sont des outils puissants qui peuvent rendre vos scripts plus dynamiques et flexibles. Elles vous permettent d'utiliser la sortie des commandes et les valeurs des variables de manière créative. Comme vous continuez votre voyage dans la programmation shell, vous vous retrouverez à utiliser ces techniques de plus en plus souvent.

Bonne programmation, et souvenez-vous - dans le monde de la programmation, la curiosité est votre meilleur ami !

Credits: Image by storyset