LPIC102/105.2 Einfache Skripte anpassen oder schreiben: Unterschied zwischen den Versionen
| Keine Bearbeitungszusammenfassung | Keine Bearbeitungszusammenfassung | ||
| Zeile 11: | Zeile 11: | ||
| | && || Kommando 2 wird dann ausgeführt, wenn das erste Kommando erfolgreich war. || <code>ls && echo "Vorgang erfolgreich"</code> | | && || Kommando 2 wird dann ausgeführt, wenn das erste Kommando erfolgreich war. || <code>ls && echo "Vorgang erfolgreich"</code> | ||
| |- | |- | ||
| | <nowiki>||</nowiki> || Kommando 2 wird dann ausgeführt, wenn das erste Kommando erfolglos war. || <code>ls /etz || echo "Fehler"$?</code> | | <nowiki>||</nowiki> || Kommando 2 wird dann ausgeführt, wenn das erste Kommando erfolglos war. || <code>ls /etz <nowiki>||</nowiki> echo "Fehler"$?</code> | ||
| |} | |} | ||
Version vom 19. Juli 2019, 11:43 Uhr
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 "Fehler"$? | 
Für die Benennung des Skriptes, ist es sehr wichtig keine Sonderzeichen einzufügen, sowie vorhandene Befehle zu benutzen. Allgemein werden Skripte meist in Textdateien geschrieben.
Wichtige Inhalte in einem Skript
- Standard-Syntax verwenden (sh)
- Kommandosubstitutionen verwenden
- verkettete Kommandos ausführen
- es werden mehrere Befehle in einer einzigen Befehlszeile ausgeführt
- werden mit einem Semikolon (;) getrennt
- Beispiel: # df -h;free -m
- -> 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
| Zeichen | |
|---|---|
| for | - | 
| && | bei diesem Zeichen wird der zweite Befehl nur ausgeführt, wenn der erste erfolgreich war | 
| || | bei diesem Zeichen wird der zweite Befehl nur ausgeführt, wenn der erste fehlgeschlagen ist | 
| while | - | 
| test | - | 
| read | - | 
| if | - | 
| seq | - | 
| exec | 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.