Corriendo
bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
da como resultado que test1
se imprima en la consola e echo $?
imprima lo 1
que, en mi opinión, es correcto, porque el comando debe regresar con lo [b/d]ash -c
que devolvió el interior, mientras que
dash -c 'dash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
da como resultado la misma salida, pero regresa de 0
acuerdo con echo $?
.
Me gustaría entender esta diferencia para ampliar mi comprensión de los shells y la programación de shell portátil.
Estoy usando bash
4.4.12 y dash
0.5.8-2.3ubuntu1 en Ubuntu 17.10 (Artful Aardvark).
&>
está en POSIX. Eso es&
seguido por>
. Enfoo &> bar
, eso esfoo &
comenzarfoo
en segundo plano y> bar
realizar una redirección sin un comando.bash
no es compatible con POSIX cuando lo interpreta de manera diferente.