Corrida
bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
resulta em test1ser impresso no console e echo $?imprimir o 1que, no meu entender, está correto, porque o comando deve retornar com o que o interno [b/d]ash -cretornou
dash -c 'dash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
resulta na mesma saída, mas retorna com de 0acordo com echo $?.
Eu gostaria de entender essa diferença para ampliar meu entendimento sobre shells e programação de shell portátil.
Estou usando bash4.4.12 e dash0.5.8-2.3ubuntu1 no Ubuntu 17.10 (Artful Aardvark).
&>está no POSIX. Isso é&seguido por>. Emfoo &> bar, éfoo ¶ começarfooem segundo plano e> barexecutar um redirecionamento sem um comando.bashnão é compatível com POSIX quando está interpretando de maneira diferente.