mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2025-01-17 21:49:22 +01:00
2.6 KiB
2.6 KiB
#!/bin/sh
Die erste Zeile des Scripts nennt sich Shebang in gibt dem System an, wie
wie das Script ausgeführt werden soll: http://de.wikipedia.org/wiki/Shebang
Du hast es bestimmt schon mitgekriegt, Kommentare fangen mit # an. Das Shebang ist auch ein Kommentar
Ein einfaches Beispiel mit hello world:
echo Hello, world!
Jeder Befehl fängt auf einer neuen Zeile oder nach einem Semikolon an:
echo 'Dies ist die erste Zeile'; echo 'Dies die zweite Zeile'
Variablen deklariert man so:
VARIABLE="irgendein String"
Aber nicht so:
VARIABLE = "irgendein String"
Bash wird VARIABLE für einen Befehl halten, den es ausführen soll. Es wird einen Fehler ausgeben,
weil es den Befehl nicht findet.
Eine Variable wird so benutzt:
echo $VARIABLE echo "$VARIABLE"
Wenn du eine Variable selbst benutzt – ihr Werte zuweist, sie exportierst oder irgendetwas anders –,
dann über ihren Namen ohne . Aber wenn du ihren zugewiesenen Wert willst, dann musst du
voranstellen.
Einen Wert aus der Eingabe lesen:
echo "Wie heisst du?" read NAME # Wir mussten nicht mal eine neue Variable deklarieren echo Hello, $NAME!
Wir haben die übliche if-Struktur:
if true then echo "Wie erwartet" else echo "Und dies nicht" fi
Ausdrücke werden im folgenden Format festgehalten:
echo $(( 10 + 5 ))
Anders als andere Programmiersprachen ist Bash eine Shell – es arbeitet also im Kontext von Verzeichnissen.
Du kannst alle Dateien und Verzeichnisse im aktiven Verzeichnis mit ls auflisten:
ls
Diese Befehle haben Optionen, die ihre Ausführung beeinflussen:
ls -l # Liste alle Dateien und Unterverzeichnisse auf einer eigenen Zeile auf
Ergebnisse eines vorangegangenen Befehls können an den nächsten Befehl als Input übergeben werden.
Der grep-Befehl filtert den Input nach dem vorgegebenen Muster. So können wir alle
txt-Dateien im aktuellen Verzeichnis auflisten:
ls -l | grep ".txt"
Befehle können innerhalb anderer Befehle mit $( ) erstetzt werden:
Der folgende Befehl zeigt die Anzahl aller Dateien und Unterverzeichnisse
im aktuellen Verzeichnis an.
echo "Dieser Ordner beinhaltet $(ls | wc -l) Dateien und Verzeichnisse."
Bash nutzt einen case-Ausdruck, der sich ähnlich wie switch in Java oder C++ verhält.
case "$VARIABLE" in # Liste der Fälle, die unterschieden werden sollen 0) echo "Hier ist eine Null." 1) echo "Hier ist eine Eins." *) echo "Das ist nicht Null." esac
loops iterieren über die angegebene Zahl von Argumenten:
Der Inhalt von $VARIABLE wird dreimal ausgedruckt.
for $VARIABLE in x y z do echo "$VARIABLE" done