Schleife substring in string

OP #6134919
Ich steh grad ein wenig auf dem Schlauch. Gegeben ist eine Variable 
$APT_PKG welche mehrere substrings (Apt Pakete) enthalten kann. Nun 
möchte ich mit einer Schleife testen ob die einzelnen Pakete bereits auf 
dem System installiert sind und mit apt-get install nur diejenigen 
aufrufen welche noch nicht installiert sind.

Den folgenden Code habe ich bereits, welcher funktioniert wenn die 
Variable nur ein Paket enthält:
1
#!/bin/sh
2
APT_PKG="zsh"
3
if [ $(dpkg-query -W -f='${Status}' $APT_PKG 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
4
    apt-get -q -y install $APT_PKG && echo "Installed Packages: $APT_PKG"
5
else
6
    echo "Package $APT_PKG already installed"
7
fi
Was mir fehlt ist die Schleife um die in Variable $APT_PKG enhaltenen 
substrings zu zerlegen in zu installieren und bereits installiert.
OP #6135038
Nun meine Lösung
1
#!/bin/sh
2
APT_PKG="zsh vim tmux fonts-powerline test"
3
for a in $APT_PKG; do
4
    if [ $(dpkg-query -W -f='${Status}' ${a} 2>/dev/null | grep -c "ok installed") -eq 1 ]; then
5
       echo "${a} is installed"
6
    else
7
       if apt-cache show "${a}" 1>/dev/null 2>&1; then
8
          echo "Install ${a}"
9
       else
10
          echo "${a} not available"
11
       fi
12
    fi
13
done
Selbstverständlich aus Schnipseln zusammengesucht. ;-)
#6135074
Wozu machst du das eigentlich? Wenn man mit apt ein Paket installieren 
will, das schon installiert ist, meldet es das doch schon. Das einzige 
wäre, wenn das Paket zwar installiert, aber veraltet ist, dass apt es 
dann auf den neuesten Stand hochzieht, aber will man das nicht sowieso?
OP #6135216
Dies ist nur ein Teil eines Scriptes der es ermöglichen soll meine Linux 
Systeme zu konfigurieren und zu aktualisieren.
Das sieht dann wie in den Anhängen aus. Das ganze Script befindet sich 
hier:

https://gitlab.com/pascalep/home-network-setup-and-configuration

Ich bitte um Nachsicht, das ganze ist noch sehr Work in progress und ich 
bin Anfänger sowohl mit Shellscript wie auch mit Git.
Angehängte Dateien:
#6139174
Pascal S. schrieb:
> Dies ist nur ein Teil eines Scriptes der es ermöglichen soll meine Linux
> Systeme zu konfigurieren und zu aktualisieren.
> Das sieht dann wie in den Anhängen aus. Das ganze Script befindet sich
> hier:
>
> https://gitlab.com/pascalep/home-network-setup-and-configuration
>
> Ich bitte um Nachsicht, das ganze ist noch sehr Work in progress und ich
> bin Anfänger sowohl mit Shellscript wie auch mit Git.

Bitte entschuldige, das ist bestimmt ein spannendes Projekt, aber warum 
entwickelst Du so etwas selbst? Dafür gibt es doch fertige, etablierte, 
getestete und sehr stabile Software -- wie zum Beispiel Ansible.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.