Corrida
bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
resulta em test1
ser impresso no console e echo $?
imprimir o 1
que, no meu entender, está correto, porque o comando deve retornar com o que o interno [b/d]ash -c
retornou
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 0
acordo com echo $?
.
Eu gostaria de entender essa diferença para ampliar meu entendimento sobre shells e programação de shell portátil.
Estou usando bash
4.4.12 e dash
0.5.8-2.3ubuntu1 no Ubuntu 17.10 (Artful Aardvark).
&>
está no POSIX. Isso é&
seguido por>
. Emfoo &> bar
, éfoo &
para começarfoo
em segundo plano e> bar
executar um redirecionamento sem um comando.bash
não é compatível com POSIX quando está interpretando de maneira diferente.