Versionsabfrage

Lord_Icon

Member
Hi,

ich hab mir ein kleines Script geschrieben, der mir gewisse Aufgaben erleichtern soll.

Leider bin ich jetzt an einen Punkt angekommen, wo ich nicht weiter weiß bzw. mir die genaueren Syntax fehlt.

Also:
ICh täte gern was auf der Shell abfragen. Die Abfrage liefert mir 2 mögliche Rückgaben.

Z.B.
Code:
rpm -q apache2

Gibt 2 mögliche Rückgaben:
package apache is not installed
apache2-2.2.10-2.5

Folgendes ist lauffähig:
Code:
APACHE=`rpm -q apache2`
if test $APACHE = "package apache is not installed"
then
   echo "Apache ist NICHT installiert"
else
   echo "Apache ist installiert"
fi

Hier erhalte ich als Ausgabe "Apache ist installiert"

Ändere ich aber apache2 in apache (erzwinge als einen Fehler, da ein solches Paket nicht installiert ist, erhalte ich:

test: line 5: test: too many arguments
Apache ist installiert

Was mache ich falsch ?
 
Naja, wenn du nach "apache" suchst wird er dir wahrscheinlich mehr als ein Argument zurück geben, oder?

Also nicht nur:
package apache is not installed
oder:
apache2-2.2.10-2.5

mehrere Packete, die installiert werden könnten, oder?

Was liefert denn:
rpm -q apache
 
Wie wäre es so:
Code:
rpm -q apache2 >/dev/null && APACHE=1 || APACHE=0

if [ $APACHE ]; then
  echo "Apache ist installiert"
else
  echo "Apache ist nicht installiert"
fi
Das gute alte Auswerten des Exitcodes hat bisher immer noch am besten zum Ziel geführt.

Geht auch so:
Code:
rpm -q apache2 >/dev/null
if [[ $? == 0 ]]; then
  echo "Apache ist installiert"
else
  echo "Apache ist nicht installiert"
fi

Oder ganz kurz:
Code:
if ( rpm -q apache2 >/dev/null ); then
  echo "Apache ist installiert"
else
  echo "Apache ist nicht installiert"
fi

PS: Meine Shell ist zsh - kann sein, dass für die Bash bei den IFs die Klammern etwas anders aussehen.

Die genaue Version bekommt man übrigens so:
Code:
rpm -q --qf "%{VERSION}" apache2
Mehr zu --qf (QueryFormat) gibts mit "man rpm"... ;)
 
Last edited by a moderator:
Back
Top