ubuntuusers.de

Überprüfung ob apt-get Befehle erfolgreich durchgeführt wurden

Status: Ungelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

temptemp

Anmeldungsdatum:
11. August 2013

Beiträge: 69

Hallo, ich möchte in einem Skript überprüfen ob die Befehle

  • apt-get install xxxxx

  • apt-get update

  • add-apt-repository ppa:xxxxc

Erfolgreich und ohne Fehler ausgeführt wurden.

Kann mir jmd sagen ob dies mit

1
2
3
if [$? != 0]; then
Xxxxxxx
fi

Funktioniert?

Danke

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11260

Wohnort: München

$? 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

1
2
3
if [ $? -ne 0 ]; then
  echo "hat nicht ohne Fehler geklappt"
fi

Alternativ kann man das auch so lösen:

1
2
3
4
5
if apt-get update; then
   echo "hat geklappt"
else
   echo "hat nicht geklappt"
fi

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

1
add-apt-repository -y ppa:xxxc && apt-get update && apt-get install xxxxx && echo "hat ohne Fehler geklappt" || echo "hat nicht geklappt"

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13207

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

1
2
3
if [ $? -ne 0 ]; then
  echo "hat nicht ohne Fehler geklappt"
fi

Alternativ kann man das auch so lösen:

1
2
3
4
5
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

1
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:

1
2
3
4
5
6
7
#!/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.

Antworten |