maveric
Goto Top

Shell und Perl Script mit Parameter starten

Moin,

ich habe ein Shell und ein Perl Skript. Die Grundlegende Idee ist,
das Shell Skript bekommt beim Aufruf den Namen einer Logfile übergeben,
bearbeitet die Logfile, speichert das Ergebnis in einer neuen Datei und
ruft dann das Perl Skript auf und übergibt als Parameter die neue Datei
bzw dessen Namen.

Das Shell Skript wird durch einen Cron job jeden Abend/Morgen um
24 Uhr oder kurz davor mit der Logfile des Tages Aufgerufen. Das ganze
ist für Statistische Zwecke.

Ich habe das Perl und das Shell Skript Programmiert. Bis jetzt ist aber
im Shell und Perl Skript jeweils die benötigte Datei hart gecoded, was
wenig sinn macht.

Meine Fragen:
Wie übergebe ich meinem Shell Script einen Parameter?
Wie Speicher ich den Parameter in eine Variable?

Wie rufe ich aus dem Shell Skript mein Perl Skript mit Übergabeparamter auf?
Wie speicher ich den Übergabeparameter?

Viele Grüße
Maveric

Content-Key: 197163

Url: https://administrator.de/contentid/197163

Printed on: April 24, 2024 at 22:04 o'clock

Member: askando
askando Jan 17, 2013 updated at 12:21:06 (UTC)
Goto Top
www.gidf.de face-smile erster Treffer ;)

http://www.perl-community.de/bat/poard/thread/11854

Hoffe das hilft Dir! Lg
Member: Maveric
Maveric Jan 17, 2013 at 12:19:50 (UTC)
Goto Top
Zitat von @askando:
www.gidf.de face-smile erster Treffer ;)

http://www.perl-community.de/bat/poard/thread/11854

Hoffe das hilft Dir! Lg

Ich hatte die ganze Zeit nach Shell + Übergabeparameter gesucht weil ich das erst im zweiten Schritte machen wollte, aber ja das ist das was ich gesucht habe. =) Danke!

Ich habe das Gesamtproblem aber just zwei Sekunden vorher gelöst und möchte meinen Ansatz kurz teilen.

Einem Shell Skript kann an anscheinend wie folgt eine Parameter übergeben:

sh meinSkript.sh Parameter

Im Skript dann mit $1 die Referenz darauf.

Für das Perl Skript habe ich mir einen Übergabeparameter gekniffen weil ich das
ja gar nicht brauch, ist mir aber erst nach dem Absenden eingefallen. Die Datei in der
das Skript sein Ergebnis speichert ist ja immer gleich =).

Viele Grüße Maveric
Mitglied: 64748
64748 Jan 17, 2013 at 13:09:37 (UTC)
Goto Top
Hallo Maveric,

allgemein ist es in der Shell so, das die Kommandozeilenparameter $1, $2, $3 usw. sind. Damit kannst Du mehrere Parameter nacheinander abarbeiten (falls erforderlich).
Übrigens ist $0 der Name des Skripts.

Bei Perl sind die Kommandozeilenparameter im Vektor @argv gespeichert. Sie lassen sich ansprechen z.B.
foreach (@ARGV) {
    say $_;
}
hierbei werden die Parameter aber ab 0 nummeriert, also $ARGV, $ARGV[1] usw.

Darf ich mal fragen, wieso Du zwei Skripten brauchst und nicht gleich alles mit Perl machst?

Markus
Member: Maveric
Maveric Jan 17, 2013 at 15:22:12 (UTC)
Goto Top
Zitat von @64748:
Hallo Maveric,

allgemein ist es in der Shell so, das die Kommandozeilenparameter $1, $2, $3 usw. sind. Damit kannst Du mehrere Parameter
nacheinander abarbeiten (falls erforderlich).
Übrigens ist $0 der Name des Skripts.

Bei Perl sind die Kommandozeilenparameter im Vektor @argv gespeichert. Sie lassen sich ansprechen z.B. <code
type=plain>foreach (@ARGV) {
say $_;
} hierbei werden die Parameter aber ab 0 nummeriert, also $ARGV, $ARGV[1] usw.

Darf ich mal fragen, wieso Du zwei Skripten brauchst und nicht gleich alles mit Perl machst?

Markus

Danke für die Info =) sehr gut zu wissen. Ich habe aktuell deshalb zwei Skripte weil
es einen Stand meines Wissens und ein Kompromiss zur Zeit ist. Ich habe die Inhalte im
ersten Schritt so gelöst das es schnell und sauber ist. Beide Skripte zu vereinen wäre
Schritt zwei. Das Shell Skript führt lediglich 3 greps auf Dateien aus und löscht nach dem
Perl Skript zwei Dateien. Solange ich jetzt nicht weis, wie ich ein grep geschickt ohne
Datenstream in einer Zeile, so wie auch in einem Shell Skript möglich umsetzte lasse ich es erst
mal so.

Grüße
Maveric
Mitglied: 64748
64748 Jan 17, 2013 at 16:36:53 (UTC)
Goto Top
Zitat von @Maveric:
Beide Skripte zu vereinen wäre
Schritt zwei. Das Shell Skript führt lediglich 3 greps auf Dateien aus und löscht nach dem
Perl Skript zwei Dateien. Solange ich jetzt nicht weis, wie ich ein grep geschickt ohne
Datenstream in einer Zeile, so wie auch in einem Shell Skript möglich umsetzte lasse ich es erst
mal so.

Grüße
Maveric
Die Dokumentation zu perl heißt perldoc, die Dokumentation zur grep-Funktion in Perl findest Du mit
perldoc -f grep 
Markus