Aufruf eines Skripts: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
Zeile 1: Zeile 1:
==Aufbau eines Skripts==
== Aufbau eines Skripts ==


*Ein Shell-Skript ist eine einfache Textdatei, die eine Abfolge von Kommandos enthält, die von der Shell interpretiert werden.*
* Ein Shell-Skript ist eine einfache Textdatei, die eine Abfolge von Kommandos enthält, die von der Shell interpretiert werden.
*Die Shell liest diese Datei zeilenweise und führt jeden Befehl nacheinander aus.*
* Die Shell liest diese Datei zeilenweise und führt jeden Befehl nacheinander aus.
*Ein Skript kann direkt im Terminal oder über Zeit- bzw. Systemmechanismen (z. B. cron) gestartet werden.*
* Ein Skript kann direkt im Terminal oder über Systemmechanismen (z. B. cron) gestartet werden.


*Am Anfang eines Skripts steht in der Regel die sogenannte '''Shebang-Zeile'''.*
* Im Gegensatz zu Windows spielt die Dateiendung unter Unix/Linux keine Rolle für die Ausführung.
*Sie definiert, welcher Interpreter das Skript ausführen soll.*
* Entscheidend ist nicht der Dateiname, sondern der '''Anfang''' der Datei – die sogenannte '''Shebang-Zeile''' (''#!'').
  #!/bin/bash
* Sie legt fest, welcher Interpreter das Skript ausführt.
 
;Beispiel ohne Shebang
* echo "echo Hallo Welt" > skript
* file skript
 
  skript: ASCII text
 
* Das Kommando '''file''' zeigt, dass es sich nur um eine einfache Textdatei handelt.
 
;Beispiel mit Shebang
* echo -e '#!/bin/bash\necho "Hallo Welt"' > skript
* file skript
 
skript: Bourne-Again shell script text executable
 
* Jetzt erkennt man am Ergebnis, dass das System den Interpreter anhand der Shebang-Zeile identifiziert hat.
* Damit das Skript direkt gestartet werden kann, müssen die Ausführungsrechte gesetzt werden:


*Die Shebang-Zeile beginnt immer mit den Zeichen ''#!'' gefolgt vom vollständigen Pfad zum Interpreter.*
* chmod +x skript
*Fehlt diese Zeile, wird das Skript von der aktuell laufenden Shell ausgeführt – was bei verschiedenen Shells zu abweichendem Verhalten führen kann.*
* ./skript


;Beispiel
  Hallo Welt
  #!/bin/bash
echo "Hallo $USER"
echo "Heute ist $(date +%A)"


*Nach der Shebang-Zeile folgen die eigentlichen Befehle, Kommentare, ggf. Variablen oder einfache Kontrollstrukturen.*
== Kommentare ==
*Leerzeilen werden von der Shell ignoriert, dienen aber der besseren Lesbarkeit.*


==Kommentare==
* Kommentare beginnen mit dem Zeichen '''#''' und werden von der Shell ignoriert.
*Kommentare beginnen mit dem Zeichen '''#''' und werden von der Shell ignoriert.*
* Sie dienen der Dokumentation und machen Skripte leichter verständlich.
*Sie dienen der Dokumentation und helfen, Skripte besser verständlich und wartbar zu machen.*
* Die Shebang-Zeile ist die einzige Ausnahme – sie beginnt zwar mit #, wird aber vom Kernel ausgewertet und nicht als Kommentar behandelt.
*Die Shebang-Zeile ist die einzige Ausnahme – sie beginnt zwar mit #, wird aber vom Kernel ausgewertet und nicht als Kommentar behandelt.*


;Beispiele
;Beispiel
# Dieses Skript gibt den aktuellen Benutzer und den Wochentag aus
  #!/bin/bash
  #!/bin/bash
  echo "Heute ist ein schoener Tag"
# Startmeldung
  echo "Start"


*Kommentare können auch am Ende einer Zeile stehen:*
* Kommentare können auch am Ende einer Zeile stehen:
  echo "Start"  # Startmeldung ausgeben
  echo "Start"  # Kommentar hinter einem Befehl


*Leere Zeilen und Kommentarzeilen haben keine Auswirkung auf die Ausführung.*
* Leere Zeilen und Kommentarzeilen haben keine Auswirkung auf die Ausführung.


==Kopfzeile und Metadaten==
== Kopfzeile und Metadaten ==
*In Schulungs- oder Administrationsumgebungen ist es gute Praxis, jedem Skript eine Kopfzeile mit Zweck, Autor, Datum und Version voranzustellen.*
 
* In Schulungs- oder Administrationsumgebungen ist es üblich, jedem Skript eine kurze Kopfzeile mit Zweck, Autor, Datum und Version voranzustellen.


;Beispielkopf für Schulungsskripte
;Beispielkopf für Schulungsskripte
Zeile 46: Zeile 58:
  # Version: 1.0
  # Version: 1.0


==Empfohlene Konventionen==
== Empfohlene Konventionen ==
*Verwende für Skripte nach Möglichkeit die Endung '''.sh''', um sie besser erkennbar zu machen.*
 
*Schreibe Befehle klar strukturiert, mit Einrückungen bei logischen Blöcken.*
* Verwende nach Möglichkeit die Endung '''.sh''', um Skripte besser erkennbar zu machen – erforderlich ist sie jedoch nicht.
*Nutze Kommentare zur Beschreibung komplexer oder sicherheitsrelevanter Bereiche.*
* Strukturiere Befehle klar und übersichtlich.
*Teste Skripte vor der Ausführung mit '''bash -n''' (Syntaxprüfung) oder '''bash -x''' (Debugmodus).*
* Setze Kommentare gezielt zur Beschreibung des Skriptzwecks ein.
*Halte den Code portabel – vermeide shell-spezifische Erweiterungen, sofern nicht nötig.*
* Teste Skripte vor der Ausführung mit '''bash -n''' (Syntaxprüfung) oder '''bash -x''' (Debugmodus).
* Halte den Code portabel – vermeide Shell-spezifische Erweiterungen, sofern nicht nötig.
 
== Aufgaben ==
 
* Erstellen Sie mit '''echo "echo Hallo Welt" > skript''' eine einfache Datei und prüfen Sie ihren Typ mit '''file skript'''.
* Fügen Sie eine Shebang-Zeile ein und prüfen Sie erneut den Dateityp mit '''file skript'''.
* Machen Sie das Skript ausführbar und starten Sie es.
* Ergänzen Sie einen Kommentar, der den Zweck des Skripts beschreibt.

Aktuelle Version vom 17. Oktober 2025, 13:48 Uhr

Aufbau eines Skripts

  • Ein Shell-Skript ist eine einfache Textdatei, die eine Abfolge von Kommandos enthält, die von der Shell interpretiert werden.
  • Die Shell liest diese Datei zeilenweise und führt jeden Befehl nacheinander aus.
  • Ein Skript kann direkt im Terminal oder über Systemmechanismen (z. B. cron) gestartet werden.
  • Im Gegensatz zu Windows spielt die Dateiendung unter Unix/Linux keine Rolle für die Ausführung.
  • Entscheidend ist nicht der Dateiname, sondern der Anfang der Datei – die sogenannte Shebang-Zeile (#!).
  • Sie legt fest, welcher Interpreter das Skript ausführt.
Beispiel ohne Shebang
  • echo "echo Hallo Welt" > skript
  • file skript
skript: ASCII text
  • Das Kommando file zeigt, dass es sich nur um eine einfache Textdatei handelt.
Beispiel mit Shebang
  • echo -e '#!/bin/bash\necho "Hallo Welt"' > skript
  • file skript
skript: Bourne-Again shell script text executable
  • Jetzt erkennt man am Ergebnis, dass das System den Interpreter anhand der Shebang-Zeile identifiziert hat.
  • Damit das Skript direkt gestartet werden kann, müssen die Ausführungsrechte gesetzt werden:
  • chmod +x skript
  • ./skript
Hallo Welt

Kommentare

  • Kommentare beginnen mit dem Zeichen # und werden von der Shell ignoriert.
  • Sie dienen der Dokumentation und machen Skripte leichter verständlich.
  • Die Shebang-Zeile ist die einzige Ausnahme – sie beginnt zwar mit #, wird aber vom Kernel ausgewertet und nicht als Kommentar behandelt.
Beispiel
#!/bin/bash
# Startmeldung
echo "Start"
  • Kommentare können auch am Ende einer Zeile stehen:
echo "Start"  # Kommentar hinter einem Befehl
  • Leere Zeilen und Kommentarzeilen haben keine Auswirkung auf die Ausführung.

Kopfzeile und Metadaten

  • In Schulungs- oder Administrationsumgebungen ist es üblich, jedem Skript eine kurze Kopfzeile mit Zweck, Autor, Datum und Version voranzustellen.
Beispielkopf für Schulungsskripte
#!/bin/bash
# Zweck:   Beispiel für Skriptaufbau
# Autor:   Thomas
# Datum:   17.10.2025
# Version: 1.0

Empfohlene Konventionen

  • Verwende nach Möglichkeit die Endung .sh, um Skripte besser erkennbar zu machen – erforderlich ist sie jedoch nicht.
  • Strukturiere Befehle klar und übersichtlich.
  • Setze Kommentare gezielt zur Beschreibung des Skriptzwecks ein.
  • Teste Skripte vor der Ausführung mit bash -n (Syntaxprüfung) oder bash -x (Debugmodus).
  • Halte den Code portabel – vermeide Shell-spezifische Erweiterungen, sofern nicht nötig.

Aufgaben

  • Erstellen Sie mit echo "echo Hallo Welt" > skript eine einfache Datei und prüfen Sie ihren Typ mit file skript.
  • Fügen Sie eine Shebang-Zeile ein und prüfen Sie erneut den Dateityp mit file skript.
  • Machen Sie das Skript ausführbar und starten Sie es.
  • Ergänzen Sie einen Kommentar, der den Zweck des Skripts beschreibt.