LPIC102/105.2 Einfache Skripte anpassen oder schreiben: Unterschied zwischen den Versionen

Aus Foxwiki
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 <nowiki>||</nowiki> 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.