Ich möchte ein Bash-Skript erstellen, das ein bestimmtes Installationsprogramm aus dem Internet herunterlädt, es installiert, eine Desktop-Datei erstellt, die es startet, es automatisch startet und dann das Installationsprogramm entfernt. Es gibt jedoch ein paar Dinge, die das Skript überprüfen soll. Diese Dinge sind:
die Existenz des Installationsprogramms (falls es nicht existiert, laden Sie es herunter, andernfalls machen Sie es ausführbar)
das Vorhandensein einer vorherigen Installation (falls vorhanden, legen Sie deren ausführbare Deinstallationsdatei fest, führen Sie sie aus und entfernen Sie alles, was sie hinterlassen hat, andernfalls fahren Sie mit dem nächsten Schritt fort)
den Status des gksu-Pakets über apt list | grep gksu (wenn es installiert ist, dann weiter mit dem nächsten Schritt, andernfalls installieren Sie es) und
die Ausgabe von gksu example.run (wenn eine Zeile „GNOME_SUDO_PASS“ vorhanden ist, wiederholen Sie gksu example.run, andernfalls fahren Sie mit dem nächsten Schritt fort)
Antwort1
Bedingung: Installer – ls. | grep example.runchmod +x pelda.run sonst wget download/link/of/example.run
So wie ich das oben Gesagte verstehe, lässt es sich wie folgt übersetzen:
if [ -f example.run ]
then
chmod +x pelda.run
else
wget download/link/of/example.run
fi
[ -f example.run ]
ist ein Beispiel für die Verwendung des test
Befehls. Wenn eine Datei mit dem Namen example.run
existiert, setzt der Testbefehl den Rückgabecode 0 (was „wahr“ bedeutet). Wenn nicht, setzt er den Rückgabecode 1 (was „falsch“ bedeutet).
Bedingung: gksu - apt list --installed | grep gksu, wenn !exists, dann sudo apt install gksu, sonst gksu pelda.run
So wie ich das oben Gesagte interpretiere, lässt es sich wie folgt übersetzen:
if apt list --installed | grep gksu
then
gksu pelda.run
else
sudo apt install gksu
fi
Hier nutzen wir die Tatsache, dass grep
ein Rückgabecode gesetzt wird, je nachdem, ob eine Übereinstimmung gefunden wird oder nicht. apt list --installed
gibt eine Liste der installierten Pakete zurück. Wenn die Ausgabe irgendwo die Zeichenfolge enthält gksu
, grep
wird ein Rückgabecode von 0 (was wahr bedeutet) gesetzt und die then
Klausel wird ausgeführt. Wenn dies nicht der Fall ist, else
wird die Klausel ausgeführt.