Le regroupement de commandes

Dernière mise à jour le 20 mai 2007 à 17:50 par jipicy
Publié par jipicy

Accolades et parenthèses

Introduction


Les accolades et les parenthèses permettent le regroupement de commandes.
Avec des accolades, les commandes sont exécutées par le shell courant, alors qu'avec les parenthèses elles sont exécutées par un sous-shell, appelé aussi shell fils (fork).

Syntaxe

  • Exécution par le shell courant
    • {commande; commande; commande;}
  • Exécution par un sous-shell
    • (commande; commande; commande;...)

Notes :
  • Un séparateur ";" (point virgule) est nécessaire devant l'accolade fermante si celle-ci se trouve sur la même ligne que la dernière commande. Ce qui n'est pas le cas pour la parenthèse.
  • Le séparateur de commande peut être le "Saut de ligne" (LF pour Line Feed)
  • Le code retour d'un bloc de commande est celui de la dernière commande exécutée.

Utilisation


Le regroupement de commandes sert principalement à :
  • Rediriger un ensemble de commandes vers (ou depuis) un même fichier
  • Exécuter un ensemble de commandes en arrière-plan
  • Conditionner l'exécution d'un ensemble de commandes

Exemple


Voilà un exemple qui j'espère aidera à mieux cerner l'emploi des accolades et des parenthèses :
#! /bin/bash

echo -e "#############################"
echo -e "# Utilisation des accolades #"
echo -e "#############################"

echo -e "\nRépertoire courant : \c"
pwd
echo -e "Initialisation de la variable \"v\" :\nv=\"abc\""
v="abc"
echo -e "\nDébut de l'environnement avec accolades...\n"
{
echo -e "Réaffectation de la variable \"v\" :\nv=\"123\""
v="123"
echo -e "\nAffichage de la variable \"v\" : \c"
echo -e "$v"
echo -e "\nChangement de répertoire : "
echo -e "cd /tmp"
cd /tmp
echo -e "\nRépertoire courant : \c"
pwd
}
echo -e "\nFin de l'environnement avec accolades...\n"

echo -e "\nRépertoire courant : \c"
pwd
echo -e "\nAffichage de la variable \"v\" : \c"
echo -e "$v"
echo

unset v
cd $HOME

echo -e "Appuyez sur une touche pour continuer..."
read touche

echo -e "###############################"
echo -e "# Utilisation des parenthèses #"
echo -e "###############################"

echo -e "\nRépertoire courant : \c"
pwd
echo -e "Initialisation de la variable \"v\" :\nv=\"abc\""
v="abc"
echo -e "\nDébut de l'environnement avec parenthèses...\n"
(
echo -e "Réaffectation de la variable \"v\" :\nv=\"123\""
v="123"
echo -e "\nAffichage de la variable \"v\" : \c"
echo -e "$v"
echo -e "\nChangement de répertoire : "
echo -e "cd /tmp"
cd /tmp
echo -e "\nRépertoire courant : \c"
pwd
)
echo -e "\nFin de l'environnement avec parenthèses...\n"

echo -e "\nRépertoire courant : \c"
pwd
echo -e "\nAffichage de la variable \"v\" : \c"
echo -e "$v"
echo
exit
Meilleures réponses pour « Le regroupement de commandes » dans :
Les commandes AS/400 Voir Les commandes de l’AS/400 Il existe environ un millier de commandes dans l'OS/400, regroupées sous le nom de « Langage de Contrôle ». Un utilisateur pourra les lancer depuis la ligne Option ou Commande située au bas de l'écran, quand celle-ci est...
Liste des commandes Windows VoirRemarques : Certaines commandes sont dangereuses (l’exemple de SYSKEY) et peuvent causer des problèmes pouvant conduire au formatage. D’autres commandes ne sont pas exécutables sous Windows XP ou des versions antérieures, je ne les ai pas...
Commandes IP relatives aux réseaux sous Windows VoirIl est parfois très utile de connaître les commandes IP, pour analyser voire configurer ses réseaux TCP/IP. Voici la liste de ces commandes à utiliser dans une fenêtre DOS...
Commandes Linux VoirTableau des principales commandes Linux Commande Description équivalent DOS ls liste le contenu d'un répertoire dir cd change de répertoire cd cd .. répertoire parent cd.. mkdir crée un nouveau...
Commandes UNIX VoirTableau des principales commandes UNIX Commande Unix Description Options ls liste le contenu d'un répertoire -a Affiche tous les fichiers, y compris les fichiers cachés ...
Systèmes d'exploitation - DOS - Commandes VoirCommande Description dir liste le contenu d'un répertoire cd change de répertoire cd .. répertoire parent md ou mkdir crée un nouveau répertoire deltree supprime un répertoire, ainsi que l'ensemble...