Source-Operator: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 42: Zeile 42:
  
 
== Aufgaben ==
 
== Aufgaben ==
* Erstellen Sie ein Skript '''config.sh''' mit zwei Variablen '''SERVER''' und '''PORT'''.
+
* Erstellen Sie ein Skript '''config.sh''' mit zwei Variablen '''SERVER''' und '''PORTS'''.
* Schreiben Sie ein weiteres Skript, das '''config.sh''' mit '''source''' lädt und die Werte ausgibt.
+
*Belegen sie die Variable SERVER  mit den IP 192.168.X.1 bis 192.168.X.12
* Fügen Sie eine Funktion in '''config.sh''' hinzu, rufen Sie sie nach dem Laden auf und prüfen Sie, ob sie im aktuellen Shell-Kontext verfügbar ist.
+
*Belegen sie die Variable PORTS  mit dem Bereich 20:500
 +
* Schreiben Sie ein weiteres Skript, das '''config.sh''' mit '''source''' lädt.
 +
*Schreiben sie darin die 2 Funktionen.
 +
**host_check: Diese soll testen ob die IP einer Rechner, den man als Argument übergibt, erreichbar ist und bei Erfolg den Rückgabewert "true" zurückliefern. Ansonsten false.
 +
**ports_check: Diesem übergegeben sie den jeweiligen Host und die Portliste und dies soll ihnen die offenen ports ausgeben.
 +
*Der Programteil soll jeden Rechner auf Erreichbarkeit prüfen.
 +
**wenn er erreichbar ist soll ein soll port_check wie oben beschrieben aufgerufen werden.

Version vom 27. November 2025, 13:13 Uhr

Funktionen – Source-Operator

  • Der Source-Operator (auch . genannt) erlaubt es, den Inhalt eines Skripts oder einer Funktion in die aktuelle Shell zu laden, ohne einen neuen Subprozess zu starten.*
  • Damit bleiben alle Variablen, Funktionen und Einstellungen im aktuellen Shell-Kontext erhalten.*

Grundprinzip

  • Mit source datei oder . datei wird die angegebene Datei zeilenweise von der aktuellen Shell ausgeführt.
  • Keine neue Subshell wird gestartet.
  • Änderungen an Variablen oder Funktionen bleiben nach dem Laden bestehen.

Beispiel – Source eines Skripts

#!/bin/bash
# Datei: vars.sh
greet() {
    echo "Name: $1"
    echo "Alter: $2"
}
  • Dieses Skript kann von einem anderen Skript geladen werden:*
#!/bin/bash
# Datei: main.sh
source ./vars.sh
# oder kurz: . ./vars.sh

greet Klaus 30
Ausgabe:
 Name: Klaus
 Alter: 30

Hinweise

  • Mit source werden alle Variablen und Funktionen direkt in die aktuelle Shell übernommen.
  • Unterschiede zu normalem Aufruf (./skript):
    • ./skript → neue Subshell, Variablen/Funktionen gehen danach verloren
    • source → aktueller Shell-Kontext wird erweitert
  • Wird häufig genutzt, um Konfigurationen, Funktionen oder Umgebungsvariablen in Skripten verfügbar zu machen.

Aufgaben

  • Erstellen Sie ein Skript config.sh mit zwei Variablen SERVER und PORTS.
  • Belegen sie die Variable SERVER mit den IP 192.168.X.1 bis 192.168.X.12
  • Belegen sie die Variable PORTS mit dem Bereich 20:500
  • Schreiben Sie ein weiteres Skript, das config.sh mit source lädt.
  • Schreiben sie darin die 2 Funktionen.
    • host_check: Diese soll testen ob die IP einer Rechner, den man als Argument übergibt, erreichbar ist und bei Erfolg den Rückgabewert "true" zurückliefern. Ansonsten false.
    • ports_check: Diesem übergegeben sie den jeweiligen Host und die Portliste und dies soll ihnen die offenen ports ausgeben.
  • Der Programteil soll jeden Rechner auf Erreichbarkeit prüfen.
    • wenn er erreichbar ist soll ein soll port_check wie oben beschrieben aufgerufen werden.