In esecuzione
bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
risulta test1essere stampato su console e echo $?stampare ciò 1che a mio avviso è corretto, perché il comando dovrebbe tornare con ciò [b/d]ash -cche è 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 0secondo echo $?.
Mi piacerebbe capire questa differenza per ampliare la mia comprensione delle shell e della programmazione delle shell portatili.
Sto usando bash4.4.12 e dash0.5.8-2.3ubuntu1 su Ubuntu 17.10 (Artful Aardvark).
&>è in POSIX. Questo è&seguito da>. Infoo &> bar, questofoo &deve iniziarefooin background ed> bareseguire un reindirizzamento senza un comando.bashnon è conforme a POSIX quando lo interpreta in modo diverso.