#!/bin/bash
# subshell.sh

echo

echo "Nous sommes à l'extérieur du sous-shell."
echo "Niveau de sous-shell À L'EXTÉRIEUR DU sous-shell = $BASH_SUBSHELL"
# Bash, version 3, ajoute la nouvelle variable           $BASH_SUBSELL.
echo; echo

variable_externe=externe
variable_globale=
#  Définit une variable globale pour le stockage
#+ de la valeur d'une variable d'un sous-shell.

(
echo "Nous sommes à l'intérieur du sous-shell."
echo "Niveau de sous-shell À L'INTÉRIEUR DU sous-shell = $BASH_SUBSHELL"
variable_interne=interne
echo "À partir du sous-shell interne, \"variable_interne\" = $variable_interne"
echo "À partir du sous-shell interne, \"externe\" = $variable_externe"

variable_globale="$variable_interne" #  Est-ce que ceci permet l'export
                                     #+ d'une variable d'un sous-shell ?
)

echo; echo
echo "Nous sommes à l'extérieur du sous-shell."
echo
echo "Niveau de sous-shell À L'EXTÉRIEUR DU sous-shell = $BASH_SUBSHELL"
echo


if [ -z "$variable_interne" ]
then
  echo "variable_interne non défini dans le corps principal du shell"
else
  echo "variable_interne défini dans le corps principal du shell"
fi

echo "À partir du code principal du shell, \"variable_interne\" = $variable_interne"
#  $variable_interne s'affichera comme non initialisée parce que les variables
#+ définies dans un sous-shell sont des "variables locales".
# Existe-t'il un remède pour ceci ?
echo "variable_globale = "$variable_globale""  # Pourquoi ceci ne fonctionne pas ?


echo

# =======================================================================

# De plus...

echo "-----------------"; echo

var=41                                                 # Variable globale.

( let "var+=1"; echo "\$var À L'INTÉRIEUR D'UN sous-shell = $var" )  # 42

echo "\$var EN DEHORS DU sous-hell = $var"                   # 41
#  Les opérations sur des variabledans un sous-shell, même dans une variable
#+ globale, n'affectent pas la valeur de la variable en dehors du sous-shell !

exit 0

#  Question :
#  ---------
#  Une fois le sous-shell quitté,
#+ existe-il un moyen d'entrer de nouveau dans le même sous-shell
#+ pour modifier ou accéder aux variables du sous-shell ?
