Laufen
bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
führt dazu, test1dass auf der Konsole gedruckt wird und echo $?gedruckt wird, 1was meines Erachtens korrekt ist, da der Befehl mit dem [b/d]ash -czurückkehren sollte, was das Innere zurückgegeben hat, während
dash -c 'dash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
führt zur gleichen Ausgabe, kehrt aber mit 0entsprechend zurück echo $?.
Ich möchte diesen Unterschied verstehen, um mein Verständnis von Shells und tragbarer Shell-Programmierung zu erweitern.
Ich verwende bash4.4.12 und dash0.5.8-2.3ubuntu1 unter Ubuntu 17.10 (Artful Aardvark).
&>ist in POSIX. Darauf&folgt>. Infoo &> bar,foo &umfooim Hintergrund zu beginnen und> bareine Umleitung ohne Befehl durchzuführen.bashist nicht POSIX-kompatibel, wenn es anders interpretiert wird.