PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Parameterübergabe an Perl-Script durch Bash-Script



ReSeT
27-05-2002, 13:46
Hi!

Folgendes:

Ich habe einige CGI Scripte in Perl vorliegen, dessen Ausgabe ich mit verscheidenen
Parametern in eine Datei umleiten möchte. Da ich die Scripte vom Vorgänger so übernommen habe und mich nicht besonders mit Perl und der Bash auskenne, habe ich da so meine Probleme.

Der Aufruf aus dem Browser sieht z.B. folgendermaßen aus:


http://myhost/cgi-bin/igshow.pl?index=41&action=show

Das funktioniert prima und das Script erzeugt die gewünschte HTML-Datei.

Wie formuliere ich nun den Shell Aufruf bzw. ein Shell Script, welches mir in einer
Schleife die Variable Index von 1-50 einsetzt und damit das Perl-Script aufruft?
Ich hoffe, ich konnte mich einigermaßen verständlich ausdrücken. :D

Ich scheitere an dieser Stelle nicht an der Konstruktion einer Schleife, sondern gewissermaßen an der Variablensubstitution.

Jemand ne Idee?

GreetZ

ReSeT

SeeksTheMoon
28-05-2002, 13:58
ich bin mir nicht sicher ob ich Dich korrekt verstanden habe, aber Du kannst doch ein Perl-Script aus einem Shellscript aufrufen wie ein Programm (also inklusive Parameter)

ReSeT
28-05-2002, 15:28
Öhm ja :D

Einfacher gefragt: Wie übergebe ich die Parameter in der URL oben auf der Kommandozeile an das Perl Script?

ponzellus
28-05-2002, 21:44
hi!
wenn ich mich richtig erinnere, liest das script die parameter entweder bei GET oder bei POST von stdin
das hiesse, dass dies hier klappen muesste:
script < param
ist nur eine vermutung

MfG ponzellus

lolli
29-05-2002, 20:54
> script < param
param müsste dann aber den Aufbau eines QUERY_STRING haben. Also varname=varwert&varname2=varwert2
(ist auch nur eine Vermutung...)

Oliver

lolli
29-05-2002, 21:09
Nach nochmaligem überlegen, muss ich leider feststellen, dass es nicht funktioniert kann!

Die Übergabewerte ("Rohdaten") werden aus der Server-Variable QUERY_STRING gelesen (GET) und die ist und wird bei der ,lokalen Ausführung nicht gesetzt.

Ähnlich ist es bei der POST-Variante. Dort benötigt man aber die Server-Variable CONTENT_LENGTH, die bestimmt, wie viele Zeichen von STDIN eingelesen werden. Die ist und wird auch nicht gesetzt, ist also 0 (NULL). Der Aufruf read(STDIN, $buffer, $ENV{'CONTENT_LEGTH'}) speichert in $buffer also 0 Zeichen.

Ich glaube, man kann aber beim Commandline-Aufruf direkt Variablenwerte setzten. Aber ich weiss grad nicht wie. Wenns mir wieder einfällt, poste ich es.

Alternativ schreibe doch dein Skript etwas um. Es macht ziemlich wenig Arbeit. (Verwendet das Skript eigentlich das CGI-Modul (steht irgendwo oben im Skript use CGI;? )

Oliver

ReSeT
04-06-2002, 08:12
Danke erstmal für eure Antworten.

Ich habe mir jetzt mit 'wget ' geholfen. Problem ist an der Stelle jetzt nur, daß wget
für jeden Aufruf aus der Schleife eine eigene Datei mit der entsprechenden Ausgabe erzeugt.
Ich muss jetzt die erzeugten Dateien eben noch mit cat zusammenhängen, klappt aber ganz gut.

Falls noch jemand ne bessere Lösung weiss....

GreetZ

ReSeT

:)