seahawk1986 schrieb:
$? ist der Exit-Code des zuletzt ausgeführten Befehls. Für einen Test sollte es Leerzeichen zwischen den eckigen Klammern und dem Testausdruck geben: http://tldp.org/LDP/abs/html/testconstructs.html
| if [ $? -ne 0 ]; then
echo "hat nicht ohne Fehler geklappt"
fi
|
Alternativ kann man das auch so lösen:
| if apt-get update; then
echo "hat geklappt"
else
echo "hat nicht geklappt"
fi
|
Das ist viel besser als die Überprüfung von $? - zumindest in diesem Zusammenhang.
Du kannst das also nach jedem einzelnen Befehl überprüfen oder z.B. auch logische Verknüpfungen in einem Listenkonstrukt einbauen: http://tldp.org/LDP/abs/html/list-cons.html#LISTCONSREF
| add-apt-repository -y ppa:xxxc && apt-get update && apt-get install xxxxx && echo "hat ohne Fehler geklappt" || echo "hat nicht geklappt"
|
Eine weitere Möglichkeit ist, die Shell terminieren zu lassen, wenn einer der Befehle nicht geklappt hat:
| #!/bin/sh
set -e
apt-get install xxxxx
apt-get update
add-apt-repository ppa:xxxxc
|
Dann bricht das Skript sofort nach dem ersten gescheiterten Befehl ab.