Scripting Teil 2

Titelbild von Gerd Altmann alias geralt Pixaby

Variablen in Skripten

In diesem Beitragsabschnitt geht es um das Verwenden und definieren von Variablen in Skripten. Das Definieren einer Variablen ist unkompliziert:

variablen_name=wert

Es gelten folgende Regeln:

  • keine Leerzeichen vor und nach dem Gleichheitszeichen (=)
  • Variablennamen verwenden typischerweise Buchstaben, Zahlen und Unterstriche und beginnen stets mit einem Buchstaben
  • Groß- und Kleinschreibung ist zu beachten. Üblicherweise werden benutzerdefinierte Variable klein geschrieben und Wörter mit einem Unterstrich (_) getrennt (snake_case). Vom System stammende Variable werden in der Regel groß geschrieben. (UPPER_CASE)
  • Um eine Variable zu verwenden wir das Dollarzeichen ($) vorangestellt

Hier dazu ein Beispiel-Script:

nano variablen_demo.ssh

mit folgendem Inhalt. Ich bin als user otto auf dem server1 angemeldet un habe mich mit cd in das Verzeichnis ~/erste_spielwiese navigiert.

Inhalt 1

#!#bin/bash
# variablen_demo.sh - deomonstriert das Definieren und Verwenden von Variablen
# Quelle: Linux entschlüsselt von Robert Frangias, modifiziert von Gustav Sommer

# Definiere einig Variable
benutzername=“Otto”
benutzerort=“Musterdorf”
datei_anzahl=5

# Verwende die Variablen in echo-Befehlen
echo “Verarbeite Daten für Benutzer: $benutzername”
echo “$benutzername lebt in $benutzerort.”
echo “Die Anzahl der Dateien ist $dateianzahl für $benutzer_name.”

Speichern mit <ctrl> o <return> mache es ausführbar (chmod +x variablen_demo.sh) und führe es aus mit (./variablen_demo.sh)

otto@server1:~/erste_spielwiese$ nano variablen_demo.sh

otto@server1:~/erste_spielwiese$ chmod +x variablen_demo.sh
otto@server1:~/erste_spielwiese$ ./variablen_demo.sh
Verarbeite Daten für Benutzer: Otto
Otto lebt in Musterdorf.
Die Anzahl der Dateien ist 5 für Otto.
otto@server1:~/erste_spielwiese$

Rufe die Datei erneut im Editor auf nano variablen_demo.sh und navigiere mit den Cursortasten an‘s Ende und füge folgende Zeilen ein:

Inhalt 2

# Verwenden von geschweiften Klammern zur Verdeutlichung oder Verkettung
echo “Dateien gehören zu ${benutzer_name}_daten” # Klammer notwendig
echo “Nächste Anzahl wird sein $dateianzahl+1” # gibt buchstäblich $dateianzahl+1 aus

# Variablen-Neuzuweisung
dateianzahl=10
echo “Aktualisiere Datei-Anzahl: $dateianzahl”

Nach erneuter Speicherung des Scripts nach obiger Erweiterung und dem Aufruf ./variablen_demo.sh sehen wir:

otto@server1:~/erste_spielwiese$ ./variablen_demo.sh
Verarbeite Daten für Benutzer: Otto
Otto lebt in Musterdorf.
Die Anzahl der Dateien ist 5 für Otto.
Dateien gehören zu Otto_daten
Nächste Anzahl wird sein 5+1
Aktualisiere Datei-Anzahl: 10
otto@server1:~/erste_spielwiese$

Zusammenfassende Beobachtungen:

  • Die Shell ersetzt $benutzer_name, $brnutzer_ort und $dateianzahl durch ihre zugewiesenen Werte (Otto, Musterort, 5)
  • In ${benutzer_name}_daten sind die geschweiften Klammern {} notwendig, um den Variablennamen (benutzer_name) klar vom unmittelbar folgendem Text (_daten) zu trennen.
  • echo “Nächste Anzahl wir sein $dateianzahl+1” gibt die liberale Zeichenkette aus (5+1) aus, wir werden gleich sein wie man das mit tatsächlicher Arithmetik besser löst.
  • Variablen können später im Script neue Werte zugewiesen bekommen

Wir führen zwei weitere Zeilen mit Kommentar und dem Syntax für korrekter Arithmetik $((datei_anzahl +1)) dazwischen:

Inhalt 3:

# Zeile mit korrekter Arithmetik
echo “Nächste Anzahl wird sein $((datei_anzahl +1))”

Und erhalten nun die gewünschte Ausgabe:

otto@server1:~/erste_spielwiese$ ./variablen_demo.sh
Verarbeite Daten für Benutzer: Otto
Otto lebt in Musterdorf.
Die Anzahl der Dateien ist 5 für Otto.
Dateien gehören zu Otto_daten
Nächste Anzahl wird sein 5+1
Nächste Anzahl wird sein 6
Aktualisiere Datei-Anzahl: 10
otto@server1:~/erste_spielwiese$

Weiterer Text folgt

Quelle: Linux entschlüsselt von Robert Frangias ISBN 9798282008821

Hinweis: Ich bevorzuge in meinen Texten aus Gründen der besseren Lesbarkeit das Generisches Maskulinum. Weibliche und andere anderweitige Geschlechtsidentitäten werden dabei ausdrücklich mit gemeint, soweit es für die Aussage erforderlich ist.

Dieser Blog verfolgt keine kommerziellen Interessen. Etwaige Werbung ist kostenfrei! #supportyourlocal

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

This site uses Akismet to reduce spam. Learn how your comment data is processed.