Laufen
bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
führt dazu, test1
dass auf der Konsole gedruckt wird und echo $?
gedruckt wird, 1
was meines Erachtens korrekt ist, da der Befehl mit dem [b/d]ash -c
zurü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 0
entsprechend zurück echo $?
.
Ich möchte diesen Unterschied verstehen, um mein Verständnis von Shells und tragbarer Shell-Programmierung zu erweitern.
Ich verwende bash
4.4.12 und dash
0.5.8-2.3ubuntu1 unter Ubuntu 17.10 (Artful Aardvark).
&>
ist in POSIX. Darauf&
folgt>
. Infoo &> bar
,foo &
umfoo
im Hintergrund zu beginnen und> bar
eine Umleitung ohne Befehl durchzuführen.bash
ist nicht POSIX-kompatibel, wenn es anders interpretiert wird.