Fork me on GitHub

Web Development

Ein Lehrbuch für das Informatik oder Medien-Informatik Studium.

Ein Shellscript fasst im einfachsten Fall ein paar Befehle zusammen, die man öfter mal ausführen muss.

Hier die wichtigsten Tipps für Shellscripts:

Magische erste Zeile und Ausgabe

Ein Shellscript beginnt mit der magischen ersten Zeile. Achtung: davor kann nichts anderes sein, nicht einmal Kommentar.

#!/usr/bin/bash

# hier kann ein Kommentar sein, das ist ok
echo "Hallo Welt"

Die Ausgabe erfolgt mit echo.

Mit den passenden Zugriffsrechte

chmod +x meinscript

kann man das Skript starten

./meinscript

Variablen setzen und verwenden

Wenn man eine Variable setzt hat sie kein Dollar-Zeichen, wenn man sie verwendet hat sie ein Dollar-Zeichen

NAME="Brigitte"

echo "Hallo $NAME"

Kontrollstrukturen: Verzweigung

sieht ähnlich aber anders aus als in c: die Bedingung ist in eckigen klammern und verwendet operatoren die immer mit Minus beginnen.

Hier -lt für “less than”:

if [ $ALTER -lt 18 ]; then
    echo "Du kommst hier nicht rein"
else
    echo "Willkommen im Club"
fi

Weitere Operatoren:

- `=`  ein Gleichzeichen für Vergleich von Strings
- `-eq` für "equal" bei Zahlen
- `-ne` für "not equal" bei Zahlen
- `-gt` für "greater than" bei Zahlen
- `-ge` für "greater or equal" bei Zahlen
- `-lt` für "less than" bei Zahlen
- `-le` für "less or equal" bei Zahlen

Und weitere Tests:

- `-f name` für "existiert eine Datei diesen Namens?"
- `-d name` für "existiert ein Ordner diesen Namens?"

Boolsche Operatoren

- `!` für Verneinung
- `&&` für und
- `||` für oder

Beispiel für Boolsche Operatoren

if [ $ALTER -ge 18 ] && [ $ALTER -lt 24 ]; then
    echo "In den USA darfst du noch keinen Alkohol trinken"
fi

Kontrollstrukturen: Schleife

for SIZE in 350 740 1400 2800
do
  echo "Ich soll davon eine Bild mit Breite $SIZE erzeugen"
done

Kommandozeile:

Wird das Programm mit Argumenten aufgerufen, so landen diese als Strings in den Variablen $1 $2 usw.

./meinscript arg1 -f

hier wäre also $1 gleich “arg1” und $2 gleich “-f”

Die Anzahl der Argument landet in der Variable $#

Eine Schleife über die Argumente:

for ARG in $@
do
  echo "Noch ein Argument: $ARG"
done

In eine Datei schreiben

Man kann die Ausgabe in eine Datei umleiten mit >, das überschreibt die Datei. Oder man kann mit >> an die Datei anfügen:

echo "Hallo Welt" > README.md
echo "nochwas,...." >> README.md

Tricks mit Variablen

Die bash bietet viele Möglichkeiten beim Aufruf einer Variable gleich noch eine Berechnung zu machen:

SPRUCH="Mit Linux wäre das nicht passiert"
echo $SPRUCH
echo ${SPRUCH/Linux/Mac}

Die Ausgabe lautet

Mit Linux wäre das nicht passiert
Mit Mac wäre das nicht passiert

Mehr Tricks im Advanced Bash Scripting Guide

Meine Konfiguration für Bash in der Datei ~/.bashrc

Falls es in meinem Homeverzeichnis eine Datei .bashrc gibt, dann wird die immer ausgeführt wenn ich eine neue Bash-Session starte.

Also z.B. wenn ich das git-bash Fenster aufmache.

In dieser Datei kann man zum Beispiel Umgebung-Variablen setzen, die immer gelten sollen:

export SPRUCH="Mit Linux wäre das nicht passiert."

Dann kann ich die Varialbe $SPRUCH auf der Kommandozeile und in allen Shell-Skripts nutzen, sie ist schon da.

Meine Shellscripts im Ordner ~/bin

Skripte die man oft braucht kann man in einem eigenen Ordner ablegen. Auf Linux und Mac wäre der typische Ort dafür der Order bin im eigenen Home-Verzeichnis.

Diesen Ordner gibt man in die PATH Variable.

z.B. indem man in der Datei ~/.bash_profile einen entsprechenen Eintrag macht:

export PATH="$PATH:/home/bjelline/bin"

hier wird die PATH Variable neu gesetzt, und zwar auf den schon vorhandnen Wert plus den Pfad zum bin-Ordner in meinem Home-Verzeichnis.

Wenn die Pfad-Variable so getzt ist, kann ich Skripts aus meinem bin-Ordner von überall aus aufrufen.

Wenn in meinem bin Ordner die Skripte mkalgodatproject und mksizes liegen kann ich sie so verwenden, egal “wo” ich bin:

cd ~/dev/studium/Jellinek_Brigitte_algodat
mkalgodatproject 5 1
cd ~/dev/studium/Jellinke_Brigitte_wp2/pizza
mksizes pizza.jpg

Mehr Shellskripting lernen