Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?
16.04.2021, 19:06:44

.
Einloggen mit Benutzername, Passwort und Sitzungslänge

Mitglieder
  • Mitglieder insgesamt: 25502
  • Letzte: j.red
Statistiken
  • Beiträge insgesamt: 729160
  • Themen insgesamt: 58832
  • Heute online: 600
  • Am meisten online: 2287
  • (22.01.2020, 19:20:24)
Benutzer Online

Autor Thema:  Frage zur Handhabung von eigenen Funktionen in bash.  (Gelesen 344 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Ich habe da eine bash Frage zur Handhabung von eigenen Funktionen in bash.

Mittlerweile habe ich halbwegs verstanden wie man Funktionen innerhalb eines Scriptes an legt und verwendet.


Nun frage ich mich in was für Arten man Funktionen auslagern kann. Ist es so das man das man z.B. einen extra Ordner anlegt und pro Funktion eine extra Datei an legen kann oder muss oder ist es so das man alle Funktionen alle zusammen in ein und dieselbe Datei rein legt wo man dann alle ausgelagerten Funktionen drin hat ?


Und wie ruft man eine in eine Datei ausgelagerte Funktion auf ?
./dateiname.sh Funktion_1./dateiname.sh Funktion_2
...
./dateiname.sh Funktion_n?
« Letzte Änderung: 22.01.2021, 18:18:04 von Jan.Tenner »

Re: Frage zur Handhabung von eigenen Funktionen in bash.
« Antwort #1 am: 22.01.2021, 19:32:29 »
Aktivieren kannst du sie über den Aufruf von
Zitat

    source <dateiname>
Ahh. Ich mache die einzubindende Datei, die eine oder mehrere Funktionen enthalten kann dem aufrufenden Script bekannt uns rufe dann im Script die Funktion genau so auf, als wenn die Funktion sich im Script selbst befinden würde.


Aktivieren kannst du sie über den Aufruf von
Zitat
Sie sind dann innerhalb der Instanz solange verfügbar wie diese nicht beendet wird.
Wird in der Instanz eine neue Instanz geöffnet werden die Funkionen an diese "vererbt".
Andere Instanzen bleiben davon unberührt.
Das klingt interessant. Nur ich komme ich da noch noch nicht ganz dahinter was es bedeutet. Bedeutet das das man die Einbindung einer Quelle die eine Funktion enthält bei Bedarf entladen könnte und das das irgend welche Auswirkungen hat oder vermeidet ?

Oder bedeutet das wenn eine Stelle eines Scriptes gerade eine Funktion verwendet, das diese dann für andere Stellen des selben oder eines anderen zweitleich laufenden Scriptes so lange gesperrt ist. Also das quasi eine ausgelagerte Funktion nur immer von einer Codestelle zur selben Zeit verwendet werden kann oder kann eine Funktion durchaus zeitgleich mehrfach verwendet werden ?
« Letzte Änderung: 22.01.2021, 19:41:04 von Jan.Tenner »

Re: Frage zur Handhabung von eigenen Funktionen in bash.
« Antwort #2 am: 22.01.2021, 21:10:14 »
Das bisherige sollte aber für den Anfang reichen.
Vieles Weitere bis "Funkionen die Funktionen aufrufen" findest du auch in der Literatur.
Je mehr du da ausprobierst wird auch die Funktionsweise verständlicher werden.

Literatur:
http://openbook.rheinwerk-verlag.de/shell_programmierung/shell_008_000.htm#RxxKap00800004004E961F017172
http://openbook.rheinwerk-verlag.de/shell_programmierung/shell_008_001.htm#RxxKap00800104004EAD1F03E172


Besten Dank. Da habe ich erst einmal Futter für mein Wochenende.

Re: Frage zur Handhabung von eigenen Funktionen in bash.
« Antwort #3 am: 22.01.2021, 23:33:37 »
Im folgenden habe ich ein Funktion als Beispiel, die sowohl wenn ich sie im Terminal als auch wenn ich sie in einem bash Script verwende funktioniert.

ruekwaertszaehler() {
              ug=0
              og=25

              echo "Aktuelle Restzahl:"
              for ((i=$og;i>=$ug;--i)); do
              # for ((i=$ug;i<=$og;++i)); do
                  printf "\r%2d " $i
                  sleep 1
              done
              printf '\n'
}

Aufruf der Funktion im .sh Script oder im Terminal
ruekwaertszaehler

Wie man eine Übergabe der Parameter vom bash Script an die Funktion macht, habe ich jetzt heraus bekommen. Das mach man in dem Fall z.B. so:
ruekwaertszaehler() {
              ug=$1 # hier setze ich bei dem Funktionsaufruf den Wert 0
              og=$2 # hier setze ich beim Funktionsaufruf den Wert 25

              echo "Aktuelle Restzahl:"
              for ((i=$og;i>=$ug;--i)); do
              # for ((i=$ug;i<=$og;++i)); do
                  printf "\r%2d " $i
                  sleep 1
              done
              printf '\n'
}

# Funktionsaufruf im terminal oder im Script:
ruekwaertszaehler 0 25
« Letzte Änderung: 23.01.2021, 10:23:04 von Jan.Tenner »

Re: Frage zur Handhabung von eigenen Funktionen in bash.
« Antwort #4 am: 23.01.2021, 10:23:23 »
Frage:
Die Auslagerung einer bash Funktion in einer Datei, sollte die Datei eine bestimmte Endung tragen oder ist zumindest eine bestimmte Dateiendung üblich und bedarf es in der Datei in der man die bash Funktion ab legt eines bestimmten Kopfes wie vlt. ein "#!/bin/bash" und oder einer bestimmten Endung in der Datei oder ist dort zumindest irgend etwas in der Art üblich ?

Nachtrag:
Ich habe das mal ein wenig mit folgendem Ergebnis getestst:
* Die Benamung und die Extension scheint für die Datei in der man die Funktionen ab legt für die Funktionen gleichgültig zu sein.
* Für die Funktion der Funktionen, scheint keinerlei bestimmter Dateikopf oder ein bestimmtes Dateiende notwendig zu sein für die Datei in der die Funktionen abgelegt werden.
« Letzte Änderung: 23.01.2021, 20:19:50 von Jan.Tenner »