Inhalt einer Variable in Datei auslagern

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ManfredG
Beiträge: 112
Registriert: 12.08.2004 17:38:14

Inhalt einer Variable in Datei auslagern

Beitrag von ManfredG » 14.08.2004 15:24:52

Hallo,
ich habe eine ziemlich große Variable mit vielen Zeilen in meinem Script.

Im Prinziep sieht das so aus:

template="
zeile1
zeile2
zeile3
zeile4 $tier
noch etwas $hunde "

Später gibt es ein

echo -e "$template" > datei.txt

Jetzt hätte ich gerne den Inhalt von $template in einer seperaten Datei template.txt . Dadurch könnte ich das Script selbst und das template.txt unabhängig voneinander weiter entwickeln.

Wichtig, wenn in template.txt eine Variabel z.B. $tier vorkommt, muß die Variable natürlich auch später beim erstellen von datei.txt automatisch ersetzt werden.

Danke für Euere Hilfe.
Liebe Grüße
Manfred

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 14.08.2004 15:55:57

Ungetestet....

Code: Alles auswählen

TEMPLATE=`cat template.txt`
Beim Verwenden von TEMPLATE sollte dann direkt die Shell Substitution zuschlagen. Notfalls kannst Du auch selbst Makros definieren (%%HUND%% z.B.) und diese dann einfach mit sed ersetzen, falls das mit den Variablen in dem Template nicht so einfach geht...

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

ManfredG
Beiträge: 112
Registriert: 12.08.2004 17:38:14

Beitrag von ManfredG » 14.08.2004 20:04:02

Hallo,
mit

TEMPLATE=`cat template.txt`

werden die Variablen leider nicht ersetzt, das habe ich auch schon ausprobiert.

Wie meinst Du das mit den Makros definieren?
Kannst Du mir dazu mal ein Beispiel geben?

Liebe Grüße und herzlichen Dank
Manfred

Benutzeravatar
fred19726
Beiträge: 507
Registriert: 18.07.2002 03:38:38
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Heidelberg (DE)
Kontaktdaten:

Beitrag von fred19726 » 14.08.2004 20:29:59

hi,

versuch mal die Datei zu sourcecn:

script.sh:

Code: Alles auswählen

#!/bin/sh
tier="hund"
hunde="bernhadiner"
. ./template.txt
template.txt:

Code: Alles auswählen

template="
zeile1
zeile2
zeile3
zeile4 $tier
noch etwas $hunde "
2 Dinge sind Unendlich, das Universum und die Menschliche Dummheit,
wobei ich mir beim Universum nicht sicher bin
-- Albert Einstein

ManfredG
Beiträge: 112
Registriert: 12.08.2004 17:38:14

Beitrag von ManfredG » 14.08.2004 22:43:45

Hallo,
das scheint doch gar nicht so trivial zu sein.

Ich bekomme dann ein:

Code: Alles auswählen

generator002.sh: zeile1: command not found
Was könnte da Abhilfe schaffen?

Liebe Grüße
Manfred

Benutzeravatar
fred19726
Beiträge: 507
Registriert: 18.07.2002 03:38:38
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Heidelberg (DE)
Kontaktdaten:

Beitrag von fred19726 » 15.08.2004 10:12:19

Morgen:

Der Punkt führt zum ziel: <Punkt><Leerzeichen><datei_die_gesourced_werden_soll>
2 Dinge sind Unendlich, das Universum und die Menschliche Dummheit,
wobei ich mir beim Universum nicht sicher bin
-- Albert Einstein

ManfredG
Beiträge: 112
Registriert: 12.08.2004 17:38:14

Beitrag von ManfredG » 15.08.2004 14:55:20

Guten Morgen,
wenn das template.txt im selben Verzeichnis ist wie das Script selbst, müßte es doch so sein oder?

. ./template.txt

Oder ist es so richtig?

. template.txt

Oder so?

/var/www/web0/html/cgi-bin/admin/scripte/template.txt

Irgendwie bin ich noch ein bißchen auf dem Holzweg heute Morgen.

Danke und liebe Grüße
Manfred

Benutzeravatar
fred19726
Beiträge: 507
Registriert: 18.07.2002 03:38:38
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Heidelberg (DE)
Kontaktdaten:

Beitrag von fred19726 » 15.08.2004 15:11:36

wenn das template.txt im selben Verzeichnis ist wie das Script selbst, müßte es doch so sein oder?

. ./template.txt
Ja, genau so, aber das funktioniert nur wenn du im selben Verzeichniss wie das Script bist wenn du es ausführst !

das sinnvollste wäre wohl ein absoluter pfad:

Code: Alles auswählen

. /var/www/web0/html/cgi-bin/admin/scripte/template.txt
2 Dinge sind Unendlich, das Universum und die Menschliche Dummheit,
wobei ich mir beim Universum nicht sicher bin
-- Albert Einstein

ManfredG
Beiträge: 112
Registriert: 12.08.2004 17:38:14

Beitrag von ManfredG » 16.08.2004 02:25:18

Hallo,
ich habe das jetzt ausprobiert.

Es geht aber leider immer noch nicht.

Code: Alles auswählen

+ begriff1=Hund
+ begriff2=Katze
+ begriff3=Maus
+ . /var/www/web0/html/cgi-bin/admin/scripte/template.txt
++ Hund Katze Maus
generator002.sh: Hund: command not found
Vielleicht gibt es ja noch einen anderen Lösungsansatz.
Hat dazu jemand eine Idee?

Herzlichen Dank und liebe Grüße
Manfred

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 16.08.2004 08:26:47

Irgendwas machst Du noch falsch, pass auf:

Code: Alles auswählen

mars:/tmp# cat template.txt 
template=" 
zeile1 
zeile2 
zeile3 
zeile4"

mars:/tmp# cat test.sh
#!/bin/sh
. ./template.txt
echo $template

mars:/tmp# ./test.sh
zeile1 zeile2 zeile3 zeile4
mars:/tmp#
Geht einwandfrei.

Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

jenst
Beiträge: 12
Registriert: 05.05.2003 10:56:14
Wohnort: Rendsburg

Beitrag von jenst » 16.08.2004 08:27:07

moin,

das müsste es sein:

Code: Alles auswählen

TEMPLATE=`cat template.txt`
export $TEMPLATE
nicht getestet.......

jens
[/quote]

Antworten