Bash Prüfung ob ein Programm installiert ist

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
trg2889
Beiträge: 137
Registriert: 01.07.2015 08:45:36

Bash Prüfung ob ein Programm installiert ist

Beitrag von trg2889 » 14.07.2018 10:26:29

Hallo zusammen,
derzeit bastel ich mir ein Shell Script, das mir bestimmte Programme automatisch installiert.
Die Prüfung ob ein Programm installiert ist oder nicht frage ich so ab:

Code: Alles auswählen

dpkg -s ostinato &> /dev/null
if [ $? -eq 0 ]; then
    echo "Package is installed!"
else
    echo "Package is NOT installed!"
fi
Bei teilweise mehr als 30 Paketen die abzufragen sind, wird der Code langsam ziemlich unübersichtlich.
Deshalb die Frage, wie kann man das Eleganter bei 30 Paketen lösen ?

Danke schonmal

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Bash Prüfung ob ein Programm installiert ist

Beitrag von Meillo » 14.07.2018 11:11:34

In der gleichen Weise, wie man das beim Programmieren immer macht, wenn man mehrmals den gleichen Code braucht: Man schreibt eine Funktion, die die Arbeit erledigt und ruft die auf. ;-)
Use ed once in a while!

inne
Beiträge: 3273
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Bash Prüfung ob ein Programm installiert ist

Beitrag von inne » 14.07.2018 11:58:41

Hallo,

nun Du prüfst ob ein Paket installiert ist, nicht Programm.

Was genau willst Du denn tun?

PS: Die Paketverwaltungstools stören sich i.d.R. nicht daran, wenn ein Paket schon installiert ist.

Benutzeravatar
Phineas
Beiträge: 348
Registriert: 20.06.2012 20:26:19

Re: Bash Prüfung ob ein Programm installiert ist

Beitrag von Phineas » 14.07.2018 13:00:05

Code: Alles auswählen

#!/bin/bash

while read Package; do
    dpkg -s "$Package" &> /dev/null
    if [ $? -eq 0 ]; then
        echo "$Package is installed!"
    else
        echo "$Package is NOT installed!"
    fi
done <<EndPackageList
ostinato
package2
package3
...
EndPackageList

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Bash Prüfung ob ein Programm installiert ist

Beitrag von MSfree » 14.07.2018 13:30:41

trg2889 hat geschrieben: ↑ zum Beitrag ↑
14.07.2018 10:26:29
Hallo zusammen,
derzeit bastel ich mir ein Shell Script, das mir bestimmte Programme automatisch installiert.
Die Prüfung ob ein Programm installiert ist oder nicht frage ich so ab:

Code: Alles auswählen

dpkg -s ostinato &> /dev/null
if [ $? -eq 0 ]; then
    echo "Package is installed!"
else
    echo "Package is NOT installed!"
fi
Bei teilweise mehr als 30 Paketen die abzufragen sind, wird der Code langsam ziemlich unübersichtlich.
Deshalb die Frage, wie kann man das Eleganter bei 30 Paketen lösen ?
Warum läßt die Abfrage, ob etwas bereits installiert ist oder nicht, nicht einfach weg?
Wenn du ein Programm mit dpkg, apt-get oder apt installierst, wird doch von den Programmen ohnehin geprüft, ob das Paket bereits installiert. Mehrfach installiert wird doch da sowieso nichts, die Überprüfung ist also völlig überflüsssig.

Ansonsten hat Meillo ja schon den richtigen Tip gegeben, man kann auch in Shellskripten sich wiederholende Vorgänge in Funktionen auslagern.

Antworten