Ce script shell fonctionne très bien sur GNU/Linux, mais pas sur AIX 5,3comportement inattendu avec "set -o errexit" sur AIX
#!/bin/sh
echo $SHELL
set -o nounset -o errexit
[ 1 -eq 1 ] && {
echo "zzz"
} && echo "aaa" && [ 1 -eq 0 ] && echo "bbb"
echo "ccc"
sur GNU/Linux, j'ai le résultat attendu:
/bin/bash
zzz
aaa
ccc
Sur AIX, j'ai celui-ci:
/bin/ksh
zzz
aaa
Sans "set -o -o nounset errexit" il fonctionne très bien ... Je n'understant pourquoi. Pourriez-vous m'expliquer ce qui ne va pas dans mon script shell.
Merci,
Rémy
Modifier. 18 novembre : Précision
set -e Lorsque cette option est activée, si une simple commande échoue pour une des raisons énumérées dans les conséquences des erreurs de Shell ou retourne une sortie valeur d'état> 0, et ne fait pas partie de la liste composée suivant un while, until, ou if keyword, et ne fait pas partie d'une liste AND ou OR , et n'est pas un pipeline précédé du! mot réservé, alors la coque doit immédiatement sortir. http://explainshell.com/explain?cmd=set+-e
Dans mon exemple, le second test "[1 -eq 0]" fait partie d'un ET, donc je devrais voir la sortie "ccc". Ce test renvoie 1, il piège la sortie "bbb", mais ne devrait pas quitter le script.
Rémy
je suppose que '/ bin/sh' dans votre Linux (probablement' 'ash' ou dash') simplement doesn » t comprendre 'set -o errexit'. Utilisez bash (que la première ligne soit '#!/Bin/bash') Edit: env' SHELL' étant '/ bin/bash' ne prouve rien, ne comptez pas dessus. –