attention à l'utilisation de () et de {}
#!/bin/bash
if [[ $1 -eq 0 ]]
then (echo -n "OUI 0";exit 63;echo "A")
else (echo -n "NON 0";exit 64;echo "B")
fi
# la suite est toujours exécutée !!!!!
echo "code de sortie du 1er if : $?" [b]# ajouté suite poste #4[/b]
echo " Paramètre reçu : $1 " [b]# ajouté suite poste #2[/b]
if [[ $1 -eq 1 ]]
then { echo -n " c'est nul ";exit 65;echo "C";}
else { echo -n " c'est nul ";exit 66;echo "D";}
fi
# mais cette suite n'est jamais exécutée
echo "jamais exécutée"
#
résultat avec 0
bash ./essai.sh 0 ; echo $?
OUI 0 code de sortie du 1er if : 63
Paramètre reçu : 0
c'est nul 66
# ==> exit 63 n'est pris en compte que dans les ( ) ( que dans le shell enfant )
# ==> exit 66 est pris en compte hors de { } ( dans le shell courant )
#
résultat avec 1
bash ./essai.sh 1 ; echo $?
NON 0 code de sortie du 1er if : 64
Paramètre reçu : 1
c'est nul 65
# ==> exit 64 n'est pris en compte que dans les ( ) ( que dans le shell enfant )
# ==> exit 65 est pris en compte hors de { } ( dans le shell courant )
#
résultat avec 2
bash ./essai.sh 2 ; echo $?
NON 0 Paramètre reçu : 2 c'est nul 66
# ==> exit 64 n'est pris en compte que dans les ( ) ( que dans le shell enfant )
# ==> exit 66 est pris en compte hors de { } ( dans le shell courant )