In esecuzione
bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
risulta test1
essere stampato su console e echo $?
stampare ciò 1
che a mio avviso è corretto, perché il comando dovrebbe tornare con ciò [b/d]ash -c
che è stato restituito dall'interno
dash -c 'dash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
produce lo stesso output, ma ritorna con 0
secondo echo $?
.
Mi piacerebbe capire questa differenza per ampliare la mia comprensione delle shell e della programmazione delle shell portatili.
Sto usando bash
4.4.12 e dash
0.5.8-2.3ubuntu1 su Ubuntu 17.10 (Artful Aardvark).
&>
è in POSIX. Questo è&
seguito da>
. Infoo &> bar
, questofoo &
deve iniziarefoo
in background ed> bar
eseguire un reindirizzamento senza un comando.bash
non è conforme a POSIX quando lo interpreta in modo diverso.