Bash Scripting Grundlagen
Write a commentSkriptbeispiele.
Hier findet Ihr einige Skriptbeispiele aus unseren Trainings und Projekterfahrungen.
Mit Bash-Skripten kann man fast alles realisieren, was ein Netzwerkadministrator für den Hausgebrauch benötigt, sei es das automatische Setzen von Berechtigungen für Samba-Freigaben oder das Prüfen einer eingebundene Netzwerkressource.
Inhalt
1. Skript mit Parametern aufrufen und auswerten
2. IP-Adresse, default Gateway und DNS-Server manuell ändern
3. IF-Beispiel mit Eingabe einer Zahl
4. IF-Beispiel! Überprüfung ob ein Verzeichnis vorhanden ist
6. Einfache While-Wiederholung (Schleife)
7. Dateien zeilenweise durchlaufen
9. Lustiges Beispiel mit akustischem Signal
10. Jedes Zeichen einer Zeichenkette abarbeiten
11. Arrays in einem Bash-Skript
1. Skript mit Parametern aufrufen und auswerten
#! /bin/bash # Skriptname: parameter.sh # lese 1. Parameter PARA1=$1 # lese 2. Parameter PARA2=$2 # Ausgabe der Parameter echo $PARA1 $PARA2
Wird ein Skript mit Parameter aufgerufen, so können diese Parameter mit den Variablen $1, $2, $3 usw. weiterverarbeitet werden. Ruft man also das Skript parameter.sh folgendermaßen auf:
# parameter.sh wert1 wert2
so erhält man die Ausgabe:
wert1 wert2
2. IP-Adresse, default Gateway und DNS-Server manuell ändern
#! /bin/bash netzkarte=eth0 ip=192.168.1.99 nm=255.255.255.0 gw=192.168.1.1 # ip adresse einstellen ifconfig $netzkarte $ip netmask $nm # route einstellen route del default route add default gw $gw # dns eintragen echo "nameserver $gw" > /etc/resolv.conf
Zeile 9: Hier wird das Netzwerkgerät (eth0) manuell auf eine andere IP-Adresse eingestellt.
Zeile 11-12: Das Standardgateway wird gelöscht und anschließend auf den neuen Wert der Variablen $gw gesetzt.
Zeile 16: Schreibt den DNS-Server (in diesem Fall gleich dem Standardgateway) in die Datei /etc/resolv.conf
3. IF-Beispiel mit Eingabe einer Zahl
#! /bin/bash read -p "Gib eine Zahl ein: " antwort # prüfe ob antwort 1 ist if [ $antwort = 1 ] ; then echo "Die Antwort ist 1" else echo "falsch!!! looser" fi
In diesem Beispiel wird die Variable $antwort abgefragt und mit der Testanweisung überprüft.
4. IF-Beispiel! Überprüfung, ob ein Verzeichnis vorhanden ist
#! /bin/bash CHECKDIR="/mnt/sicherung" # prüfe ob /mnt/sicherung vorhanden ist if [ -d $CHECKDIR ]; then echo "Ja das Verzeichnis ist da" else echo "Verzeinis nicht gefunden lege an..." mkdir $CHECKDIR fi
Eine weitere Variante ist das Überprüfen von Dateien und Verzeichnissen.
Im vorliegenden Fall wird geprüft, ob das Verzeichnis /mnt/sicherung existiert, im Nein-Fall wird das Verzeichnis angelegt.
5. Mehrfachselektion
#! /bin/bash read -p "Soll ich weitermachen? (j/n) " antwort case $antwort in j|J) echo "Weiter " ;; n|N) echo "ich stoppe " ;; *) echo "falsch Eingabe" esac
Mehrfachselektionen können mit case abgehandelt werden. Die Besonderheit ist das doppelte Semikolon welches die break-Anweisung sendet. Hier wird eine Variable $antwort eingelesen und auf die Buchstaben "j, J" oder "n, N" hin geprüft.
6. Einfache While-Wiederholung (Schleife)
#! /bin/bash weiter="j" while [ $weiter = "j" ] ; do echo "Die schleife läuft" read -p "Nochmal? (j/n) " weiter done
Im gezeigten Beispiel läuft eine Schleife solange die Variable $weiter den Wert "j" besitzt.
Pro Schleifendurchlauf wird die Variable $weiter mit dem read Kommando wieder neu eingelesen!
7. Dateien zeilenweise durchlaufen
Die Beispieldatei liste1.txt enthält folgende Werte:
apfel |
birne |
banane |
alles obst |
ende gelände |
Mit dem nachfolgenden Shellskript wird diese Datei zeilenweise durchlaufen. Jeder Wert steht somit in der Variable $daten und kann entsprechend weiterverarbeitet werden.
#! /bin/bash for daten in $(cat liste1.txt); do echo "$daten" done
8. Zählerschleifen
Zählerschleifen wie man sie von anderen Programmiersprachen kennt, sind bei Bash Scripting natürlich auch möglich
#! /bin/bash for (( i=10; i > 0; i-- )) ; do echo $i; done
9. Lustiges Beispiel mit akustischem Signal
#! /bin/bash echo "A C H T U N G ..." let volume=10000 for (( i=10; i > 0; i-- )) ; do let volume=($volume+500) echo "Lautstaerke: $volume" paplay /usr/share/sounds/freedesktop/stereo/bell.oga --volume $volume sleep 0.2 done paplay /usr/share/sounds/freedesktop/stereo/complete.oga echo "E N D E !!!"
10. Jedes Zeichen einer Zeichenkette abarbeiten
#! /bin/bash # # Diese Schleife durchläuft den String # Zeichenweise. n = Zähler s="abcdefg1234567890"; n=0; stringCount=${#s}; while [ $n -lt ${stringCount} ]; do echo ${s:n:1} n=$(( $n + 1 )) done;
Zeile 8: Ein String wird in der Variable $S angelegt.
Zeile 11: Mit der Anweisung ${#S} wird die Anzahl Zeichen von $S ermittelt.
Die Schleife läuft solange $n kleiner als die Anzahl Zeichen in $S.
Zeile 13: Mit der Anweisung ${S:n:1} wird an Stelle n ein Zeichen mit Länge 1 ausgelesen.
Zeile 14: Erhöht den Zähler n pro Schleifendurchlauf um 1.
11. Arrays in einem Bash Skript
Dieses Beispiel zeigt, wie man indexbasierte Arrays abarbeitet.
#! /bin/bash # Array Variable mit Werten füllen arrayVariable[0]="birne" arrayVariable[1]="apfel" arrayVariable[2]="banane" # Array durchlaufen for werte in "${arrayVariable[@]}"; do echo $werte; done
12. Funktionen verwenden
Das nachfolgende Beispiel zeigt wie ein Skript mit genau 2 Parameter aufgerufen wurde.
#! /bin/sh printUsage () { echo "Usage file <infile> <outfile>" exit 1 } if [ $# -ne 2 ]; then printUsage fi
You are a guest
or post as a guest
Be the first to comment.