Fonctionnement
bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
entraîne l' test1impression sur la console et l' echo $?impression, 1ce qui, à mon sens, est correct, car la commande doit retourner avec ce que l'intérieur a [b/d]ash -crenvoyé 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 0selon echo $?.
J'aimerais comprendre cette différence afin d'élargir ma compréhension des shells et de la programmation de shell portable.
J'utilise bash4.4.12 et dash0.5.8-2.3ubuntu1 sur Ubuntu 17.10 (Artful Aardvark).
&>est en POSIX. Cela est&suivi de>. Dansfoo &> bar, c'estfoo &pour démarrerfooen arrière-plan et> barpour effectuer une redirection sans commande.bashn'est pas conforme à POSIX lorsqu'il l'interprète différemment.