Grundlagen
Mit Linux Shell Skripting könne Shell-Befehle automatisiert ausgeführt werden. Ich persönlich gehe davon aus, dass Sie grundsätzlich schon einmal auf einer Linux-Shell unterwegs waren und deshalb schon von den grundlegenden Kommandos etwas gehört haben, wie beispielsweise cat, grep, ls usw., und auch mit einem TExteditor wie vi oder nano schon zu tun hatten.
Skripte sind Dateien, die man bestenfalls mit der Endung .sh abspeichert, damit sie als Shell-Skripte deutlich erkennbar sind. Solche DAteien kann man von jedem Ordner aus ausführen (egal in welchem print working direcotry man sich gerade befindet), wenn man diese in einem Pfad ablegt, der in der PATH-Variable hinterlegt ist (die PATH-Variable enthält Ordner, in denen die Shell automatisch nach Binaries wie grep, ls oder cat sucht. Befindet sich dort ein Skript, wird es gefunden und kann ausgeführt werden, ohne dass man den vollen Pfad zum Skript angeben muss).
Neben Skriptdateien werden in der Unix/Linux-Welt zur Automatisierung von Aufgaben häufig auch Programmiersprachen wie Ruby, Python oder – am beliebtesten – Perl verwendet. In einem anderen Post habe ich versucht zu erörtern, welche Sprache denn in welchen Situationen zur Automatisierung besser geeignet ist – ein Perl-Programm oder ein Shell-Skript.
Damit diese Dateien überhaupt ausgeführt werden können, müssen in den chmod-Dateiberechtigungen für den User, der die Datie ausführt, Ausführrechte vergeben werden.
chmod u+x <skript>
Skripte werden ausgeführt mit
sh <skriptdatei> #oder bash <skriptdatei> #oder zsh <skriptdatei> #oder csh <skriptdatei>
oder, wenn die sogenannte Shebang-Zeile gepflegt ist (siehe weiter unten), indem man einfach nur die Datei ausführt
mein_skript.sh
jenachdem, mit welcher Shell man das Skript ausführen möchte. Die beiden häufisgten Shells sind bash und sh. Die meisten Skripte solltet ihr mit der bash ausführen, da die meisten Skripte speziell für die bash geschrieben werden.
Wenn ein Skript fehlerhaft geschrieben wird und es nicht sauber durchläuft, sieht man leider erstmal nicht, warum. Damit man eventuelle Fehlermeldungen beim Ausführen eines Skripts sieht, muss man den PArameter -x mitgeben, also bspw.
bash -x <skriptdatei>
Am Anfang eines Shell-skritps gibt man an, mit welcher Shell man es ausführen möchte. Dazu schriebt amn in die erste Zeile
#!/bin/bash
Dies ist die sogenannte Shebang-Zeile. Damit ist sichegrestellt, dass egal mit welcher Shell man das skript ausführt, am Ende doch die richitge Shell genutzt wird. Selbst wenn ich dieses skript jetzt mit
csh mein_skript.sh
ausführe, wird am Ende doch die bash verwendet. ist die Shebang-Zeile gepflegt, kann man das Skript einfach nur über den Dateinamen ausführen.
Wenn Sie schon mal gurndsätzlich mit einer Unix/Linux-Shell gearbeitet haben, wird Ihnen bekantn sein, dass Sie mit dem kommando export <variablenname> Variablen setzen und über echo $<variablenname> den Wert der Variablen ausgeben können. Solche Variablen sind wichtig für das SEtzen von if else-STatements, also „Wenn dies dann mach das, wenn das andere dann mach jenes“-Verzweigungen in einem Skript.
unsere erste Verzweigung
if [[ $USER = "dafrk" ]]
then
echo "Hallo DaFRK"
else
echo "Du bist nicht DaFRK"
fi
If-Statements im Shlel-Skripting werden also mit dem Wort if und der Bedingung in doppelten eckigen klammern eingeleitet und mit fi geschlossen.
Die doppelten Eckigen Klammern werden genutzt, wenn man Zeichenketten testen möchte. Möchte man hingegen numerische Werte abfragen, also Zahlen, dann nutzt man doppelte runde Klammenr
if (( $ALTER >= 18 ))
then
echo "Zugriff erteilt"
else
echo "Sie sind noch nicht alt genug"
fi
Wenn wir dazwischen jetzt nochmal eine KOnditionsabfrage machen wollen, geben wir ein
if (( $ALTER >= 18 ))
then
echo "Zugriff erteilt"
elif (($ALTER <=18 && $ALTER >= 16))
then
echo "Zwar noch keine 18, aber ist ja nicht mehr lange :)"
else
echo "Sie sind noch nicht alt genug"
fi
Wichtig ist hier zu verstehen, dass man für das elif wieder ein then braucht, aber es kein schließendes file (elif rückwärts) gibt.






