vorige Präsentation: Kommandozeile | zurück zum Buch-Kapitel [esc] | Nächste Präsentation VS Code
Ein Shellscript fasst im einfachsten Fall ein paar Befehle zusammen, die man öfter mal ausführen muss.
Hier die wichtigsten Tipps für Shellscripts:
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
Wenn man eine Variable setzt hat sie kein Dollar-Zeichen, wenn man sie verwendet hat sie ein Dollar-Zeichen
NAME="Brigitte" echo "Hallo $NAME"
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
for SIZE in 350 740 1400 2800 do echo "Ich soll davon eine Bild mit Breite $SIZE erzeugen" done
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
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
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
~/.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.
~/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
vorige Präsentation: Kommandozeile | zurück zum Buch-Kapitel [esc] | Nächste Präsentation VS Code
/
#