|  |  | 
| Zeile 14: | Zeile 14: | 
|  | |} |  | |} | 
|  | 
 |  | 
 | 
|  | Für dieBenennung des Skriptes,ist es sehr wichtig '''keine''' Sonderzeichen einzufügen, sowie vorhandene Befehle zu benutzen.
 |  | Lange Kommandos, die sich über mehrere Zeilen verteilen, sollten mit einem Backslash ''\'' aufgeteilt werden. | 
|  | Allgemein werden Skripte meist in Textdateien geschrieben.
 |  |  dd of=/dev/zero \ | 
|  |  |  if=/.tmp \ | 
|  |  |  bs=1M count=2000 stauts=progress | 
|  | 
 |  | 
 | 
|  | ==Wichtige Inhalte in einem Skript== |  | ==Ausführung eines Skripts== | 
|  | 
 |  | 
 | 
|  | *Standard-Syntax verwenden (sh) |  | ===Ausführungsberechtigung=== | 
|  | *Kommandosubstitutionen verwenden |  | *Ein Shell-Skript kann nur dann ausgeführt werden, wenn die Datei auf "ausführbar" gesetzt wird. | 
|  | *verkettete Kommandos ausführen |  | *Mit ''ls -l'' kann man die Berechtigungen sehen | 
|  | **es werden mehrere Befehle in einer einzigen Befehlszeile ausgeführt
 |  | *Mit ''chmod'' kann man das Attribut für die Ausführbarkeit gesetzt werden. | 
|  | **werdenmit einem Semikolon (;) getrennt
 |  |  # chmod a+x <Skriptdatei> | 
|  | **Beispiel: #df -h;free -m
 |  | *<code>chmod 700 <Skriptdatei></code> setzt das Ausführungsbit nur für den Benutzer. | 
|  | **->Zunächst zeigt es die Festplattenbelegung, anschliessend die Speicherverwendung |  | 
|  | 
 |  | 
 | 
|  | ==Position eines Skriptes==
 |  | 
|  | 
 |  | 
|  | Falls man ein Skript öfter benötigt, wäre es sinnvoll ein Verzeichnis auszuwählen, dass auf die PATH-Variable zeigt.
 |  | 
|  | */usr/bin ist gut geeignet für systemweite und für jeden zugänglich
 |  | 
|  | */usr/sbin ist gut geeignet für durchgeführte administrative Eingriffe oder auch nicht für normale Benutzer anwendbar sein sollen
 |  | 
|  | 
 |  | 
|  | ==Ausführung eines Skriptes==
 |  | 
|  | Es gibt drei Methoden ein Skript auszuführen:
 |  | 
|  |    # Addiert zwei Werte
 |  | 
|  |    let summe=$1+$2
 |  | 
|  |    echo "Die Summe aus $1 und $2 ist $summe."
 |  | 
|  | Zum einen mit "add":
 |  | 
|  |    /bin/bash /storage/scriptdemo/add 5 6
 |  | 
|  |    Die Summe aus 5 und 6 ist 11.
 |  | 
|  | Zum anderen mit "source":
 |  | 
|  |    source /storage/scriptdemo/add 5 6
 |  | 
|  |    Die Summe aus 5 und 6 ist 11.
 |  | 
|  | Zum anderen musst du zunächst die Datei ausführbar machen:
 |  | 
|  |    /storage/scriptdemo # ls -l
 |  | 
|  |    ...
 |  | 
|  |    -rw-r--r--   1 root root  92 Aug 24 16:52 add
 |  | 
|  |    ...
 |  | 
|  | -rw-r-r-- das sind Standardberechtigungen für eine neue Datei. Bedeutet mit "chmod" wird das Attribut für die Ausführbarkeit hinzugefügt:
 |  | 
|  |    /storage/scriptdemo # chmod a+x add
 |  | 
|  |    /storage/scriptdemo # ls -l
 |  | 
|  |    ...
 |  | 
|  |    -rwxr-xr-x   1 root root  92 Aug 24 16:52 add
 |  | 
|  |    ...
 |  | 
|  | Nun wird die Shebangzeile eingefügt:
 |  | 
|  |    #!/bin/bash
 |  | 
|  |    # Addiert zwei Werte
 |  | 
|  |    let summe=$1+$2
 |  | 
|  |    echo "Die Summe aus $1 und $2 ist $summe."
 |  | 
|  | Das Zeichen "#!" ist in dieser Situation '''kein''' Kommentarzeichen, sondern zeigt die Ausführbarkeit der Datei an.
 |  | 
|  | ==Wichtige Dateien, Verzeichnisse und Anwendungen==
 |  | 
|  | 
 |  | 
|  | {|class="wikitable"
 |  | 
|  | !Zeichen !!  
 |  | 
|  | |-
 |  | 
|  | | <nowiki>for</nowiki> || -
 |  | 
|  | |-
 |  | 
|  | | <nowiki>&&</nowiki> || bei diesem Zeichen wird der zweite Befehl nur ausgeführt, wenn der erste erfolgreich war
 |  | 
|  | |-
 |  | 
|  | | <nowiki>||</nowiki> || bei diesem Zeichen wird der zweite Befehl nur ausgeführt, wenn der erste fehlgeschlagen ist 
 |  | 
|  | |-
 |  | 
|  | | <nowiki>while</nowiki> || -
 |  | 
|  | |-
 |  | 
|  | | <nowiki>test</nowiki> || -
 |  | 
|  | |-
 |  | 
|  | | <nowiki>read</nowiki> || -
 |  | 
|  | |-
 |  | 
|  | | <nowiki>if</nowiki> || -
 |  | 
|  | |-
 |  | 
|  | | <nowiki>seq</nowiki> || -
 |  | 
|  | |-
 |  | 
|  | | <nowiki>exec</nowiki> || Erklärung im unteren Teil des Artikels. (Sonstiges) 
 |  | 
|  | |}
 |  | 
|  | 
 |  | 
|  | ==Übergabevariablen und Rückgabewerte==
 |  | 
|  | 
 |  | 
|  | ==Grundrechenarten==
 |  | 
|  | 
 |  | 
|  | Es gibt vier verschiedene Grundrechenarten, mit denen man im Skripten arbeiten und rechnen kann.
 |  | 
|  |    clear; echo -e "\nGeben Sie jetzt den ersten Wert ein  "
 |  | 
|  |    read a
 |  | 
|  |    clear; echo -e "\nGeben Sie jetzt den zweiten Wert ein  "
 |  | 
|  |    read 
 |  | 
|  | Damit wurde ein Wert für die Varibale "a" und "b" gesetzt.
 |  | 
|  | *[a]ddieren
 |  | 
|  |    if [$operator=a]; then
 |  | 
|  |          let c=a+b
 |  | 
|  |          clear; echo $a + $b = $c
 |  | 
|  | *[s]ubtrahieren
 |  | 
|  |    elif [ $operator=s]; then
 |  | 
|  |            let c=a-b
 |  | 
|  |            clear; echo $a – $b = $c
 |  | 
|  | *[m]ultiplizieren
 |  | 
|  |    elif [ $operator=m]; then
 |  | 
|  |            let c=a*b
 |  | 
|  |            clear; echo $a * $b = $c
 |  | 
|  | *[d]ividieren
 |  | 
|  |    elif [ $operator=d]; then
 |  | 
|  |            let c=a/b
 |  | 
|  |            clear; echo $a / $b = $c
 |  | 
|  | 
 |  | 
|  | ==Sonstiges==
 |  | 
|  | 
 |  | 
|  | Mit Exec kann man ein externes Programm oder ein anderes Skript aufrufen, dabei wird der laufenden Prozess / das laufende Skript automatisch beendet und ersetzt.
 |  | 
|  | 
 |  | 
 | 
|  | [[Category:Linux]] |  | [[Category:Linux]] | 
Mithilfe von Skripten können alltägliche Aufgaben völlig automatisch ablaufen lassen. In Skripten müssen neben Shell-Kommandos auch Befehle fürs Programmieren angewendet werden, vornehmlich Schleifen und Fallunterscheidungen.
Kommandos verketten
Es gibt drei Zeichen, um Kommandos nacheinander auszuführen.
| Zeichen | Bedeutung | Beispiel | 
| ; | Kommandos werden nacheinander durchgeführt | echo "Dies ist eine Liste";ls -l | 
| && | Kommando 2 wird dann ausgeführt, wenn das erste Kommando erfolgreich war. | ls && echo "Vorgang erfolgreich" | 
| || | Kommando 2 wird dann ausgeführt, wenn das erste Kommando erfolglos war. | ls /etz || echo "Fehlernummer $?" | 
Lange Kommandos, die sich über mehrere Zeilen verteilen, sollten mit einem Backslash \ aufgeteilt werden.
dd of=/dev/zero \
if=/.tmp \
bs=1M count=2000 stauts=progress
Ausführung eines Skripts
Ausführungsberechtigung
- Ein Shell-Skript kann nur dann ausgeführt werden, wenn die Datei auf "ausführbar" gesetzt wird.
- Mit ls -l kann man die Berechtigungen sehen
- Mit chmod kann man das Attribut für die Ausführbarkeit gesetzt werden.
# chmod a+x <Skriptdatei>
- chmod 700 <Skriptdatei>setzt das Ausführungsbit nur für den Benutzer.