Hallo Arno,
im Prinzip wurde ja schon alles irgendwie gesagt. Aber ich möchte dir noch sagen wie ich so etwas immer mache.
Ich habe zb ein Datei mit den Variablen mein.env In mein.env steht zB value1=10 value2=20 ...
und ich habe eine Datei my_funcs.sh:
function hello { echo "Hello" } ...
und in meinem Haupt script sieht das dann so aus:
#!/bin/sh
. /path/to/mein.env . /path/to/my_funcs.sh
do something
Hier sind jetzt meine Variablen und auch meine Funktionen bekannt
ich hoffe das ist jetzt etwas klarer für dich.
Viele Grüße Toby
Am 01.08.22 um 17:17 schrieb Arno:
Beim booten läuft bei mir ein script. Gestartet aus einem rc5.d/Sxx. Da wird z.B. eine Textdatei aus dem System geparst und daraufhin bestimmte Variablen und auch Pfade gesetzt. Diese werden dann im weitere Verlauf genutzt und zu verschiedenen Aktivitäten führen. Soweit so normal.
Jetzt ist mein script schon etwas länglich geworden und es droht die Übersicht verloren zu gehen. Also hab ich es in Funktionen aufgeteilt. Damit wird das script aber nicht kürzer. Das ganze möchte ich etwas wartungsfreundlicher und lesbarer gestalten. Ideal wäre ein einem Startscript die Variablen/Pfade zu setzen und dann bestimmte Unterscripts zu starten. Was aber dabei ein Problem zu sein scheint: a) die Variablen vom Startscript übernehmen b) Variablen im Idealfall auch noch von Unterscript zu Unterscript weiterreichen
Erschwerend kommt hinzu, dass das ganze während des Bootens passiert, also nicht aus einer klassischen shell heraus. Ich meine, das nicht mal a) da so ohne weiteres geht. Oder gibt es da Tricks? Ich hab nicht so viel sinnvolles dazu gefunden oder ich hab nicht die richtigen keywords dazu.
Zusatzfrage: Wenn ein Script wie meines gerade aus Funktionen besteht: Am Ende der Funktionsdefinitionen werden die aufgerufen. Kann man z.B. zum Testen, diese Funktionen (aus einer echten) Shell auch einzeln aufrufen? Also nur einzelne Funktionen um das Step by Step zu testen. Wie gesagt, die Pfade/Variablen müssen gesetzt bleiben, sonst ist es sinnlos. Bei läuft dann immer nur das ganze Script... Wenn ich das richtig verstanden hab, kann man nur dann einzelne Funktionen eines scripts aufrufen, wenn es kein "main" gibt, also sozusagen nur Funktionen. Ist das wahr?
Schöne Woche, Arno