Fonctionnement
bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
entraîne l' test1
impression sur la console et l' echo $?
impression, 1
ce qui, à mon sens, est correct, car la commande doit retourner avec ce que l'intérieur a [b/d]ash -c
renvoyé alors que
dash -c 'dash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
donne la même sortie, mais renvoie avec 0
selon echo $?
.
J'aimerais comprendre cette différence afin d'élargir ma compréhension des shells et de la programmation de shell portable.
J'utilise bash
4.4.12 et dash
0.5.8-2.3ubuntu1 sur Ubuntu 17.10 (Artful Aardvark).
&>
est en POSIX. Cela est&
suivi de>
. Dansfoo &> bar
, c'estfoo &
pour démarrerfoo
en arrière-plan et> bar
pour effectuer une redirection sans commande.bash
n'est pas conforme à POSIX lorsqu'il l'interprète différemment.