Re-
Les accolades et les parenthèses permettent le regroupement de commandes.
Comme expliqué par "
bipod", 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 shell fils (fork).
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
Voilà un exemple qui j'espère t'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
;-))