Hi Liste, ich bin dabei, mir ein paar CGIs in Form von Shellskripten zu stricken. Dabei hatte ich vor, die Konfiguration in einer externen Konfig-Datei (a la rc.config) abzulegen, damit Änderungen daran zentral verwaltet werden können. Wenn ich jetzt aber im Skript mit 'source datei' oder '. datei' (mit oder ohne Pfad, relativ oder absolut) arbeiten will, dann passiert gar nichts. Es gibt keine Fehlermeldungen, aber auch keine Variablen. Weiß jemand, a) woran das liegt b) ob / wie man das beheben kann c) ob es eine bessere Möglichkeit gibt, das zu realisieren ? Danke, Sebastian -- "No worries." - Rincewind Sebastian Helms - mailto:sebastian@helms.sh (PGP available) SuSE-Linux-Mailinglisten-FAQ: http://www.ndh.net/home/s.helms/faq/ --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo Sebastain, Sebastian Helms wrote:
Wenn ich jetzt aber im Skript mit 'source datei' oder '. datei' (mit oder ohne Pfad, relativ oder absolut) arbeiten will, dann passiert gar nichts. Es gibt keine Fehlermeldungen, aber auch keine Variablen.
Hmm, wie du diese Datei genau aufrufen musst, damit das klappt kann ich dir momentan leider auch nicht sagen.
Weiß jemand,
a) woran das liegt b) ob / wie man das beheben kann c) ob es eine bessere Möglichkeit gibt, das zu realisieren ?
Ich stuerze mich mal auf c)... :-) Ich wuerde dafuer Perl nehmen. Geht mindestens genauso einfach - und du kannst solche feinen Sachen wie CGI.pm verwenden. Die Daten wuerde ich ein einer Konfigdatei folgender Form ablegen. # Kommentar name1 = wert 1 name2 = wert 2 Das liest du dann in Perl wie folgt ein: open(CF,"<counter.cf")||cerror(1,0); while(<CF>) { chomp; next if /^#/ || /^$/; ($name,$value) = split(/=/, $_); $name =~ s/\s*//g; $value =~ s/^\s*//g; $value =~ s/\s*$//g; $cf{uc($name)} = $value; } close(CF)||cerror(2,0); Danach kannst du auf die einzelnen Werte mit $cf{VARIABLENNAME} zugreifen, wobei der Variablenname gross geschrieben werden muss. (Wenn das nicht erwuenscht ist, oben das uc(...) weglassen. cerror war in dem betreffenden CGI, aus dme ich hier kopiert habe eine sub um einen Fehler auszugeben und zu beenden. Sinnvoll ist es weiter Standardwerte zu setzen, falls nicht alle Variablen in der Konfigurationsdatei deklariert sind: %default_cf = ( "COUNT" => 1, "MSG_OFF" => "[ counter is off ]", [...snip...] "LEFT_FRAME" => "", "RIGHT_FRAME" => "" ); Dein Vorteil: Wenn ich es richtig verstanden habe, so führst du die Konfigurationsdatei oben quasi als Shell-Skript aus um die Werte zu setzen. Das wird spaetestens dann ungemuetlich, wenn mehrere Leute zugriff auf diese Konfig haben, beispielsweise, wenn man die Werte ueber ein Web-Interface mal bequem setzen lassen will. Dann kommt du dabei ganz schnell in Probleme mit der Sicherheit deines Servers. Tschuess, Jan BTW: Das Skript oben ist ein kleiner Counter fuer Webpages, der per SSI eingebunden wird. Er kann arabisch und roemisch zaehlen. Wer Interesse hat, kann ihn per PM bekommen. (Auf meiner Homepage liegt zwar Version 0.3, aber 0.5 ist inzwischen aktuell. :-) --
Jan Theofel * mailto: jan@theofel.de * http://www.theofel.de/ <<<
Check AniTMT, a free software to create photorealistic animations: German: http://www.anitmt.de/ English: http://www.anitmt.org/ --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
participants (2)
-
jan@theofel.de
-
sebastian@helms.sh