Returnwert in Shell-Script abfragen

G

gruber99

Mitglied
hallo an alle shell-gurus,

hab ein kleines problem und zwar folgender tatbestand:

-> ich habe ein Perl-Script welches ich per Return-Code/Exit-Code 77 beende
-> nach Beendigung des Perl-Script wird auomatisch ein Fehler-Shell-Script aufgerufen (dies geschiet vom system)
-> wie kann ich in diesem Fehler-Shell-Script den Returnwert aus dem Perl-Programm abfragen ?

mit "$?" funktionierts nicht der ist immer 0 - aus dem Perl-Script wird aber definitiv der Return-Code 77 geliefert.

danke
hannes
 
also wenn du mit exit den exitcode setzt, dann ist der nachher auch in $? verfügbar. allerdings wird er natürlich vom nächsten shell command wieder neu gesetzt.
 
Alternativ könntest du deinen Rückgabewert auch in eine Umgebungsvariable abspeichern.
 
Du könntest den Teil des Perlskriptes posten, in dem der Rückgabewert behandelt wird. Vielleicht liegt da ein Fehler.

Gruss, Phorus
 
Hallo
Du kannst in deinem perl-Script auch nach <STDOUT> oder <STDERR> schreiben.

Gruß Wolfgang
 
also mein Perl-Script sieht so aus:

...
$retval=77;
...
exit($retval);

--> eine Umgebungsvariable welche ich im Perl-Script setze gilt ja nur für den Mutter-Prozess, also in meinem Fall innerhalb des Perl-Scripts ?
 
kannst du mal den teil vom shell script posten, wo das perl script aufgerufen wird und wo der returncode dann abgefragt wird
 
gruber99 schrieb:
also mein Perl-Script sieht so aus:

...
$retval=77;
...
exit($retval);

--> eine Umgebungsvariable welche ich im Perl-Script setze gilt ja nur für den Mutter-Prozess, also in meinem Fall innerhalb des Perl-Scripts ?

Hmm sieht ok aus. Hehejo meinte es so:

Code:
perlskript.pl
rw=$?
...
echo $rw

also ausserhalb des Perlskriptes.

Gruss, Phorus
 
gruber99 schrieb:
also mein Perl-Script sieht so aus:

...
$retval=77;
...
exit($retval);

--> eine Umgebungsvariable welche ich im Perl-Script setze gilt ja nur für den Mutter-Prozess, also in meinem Fall innerhalb des Perl-Scripts ?
Hallo
Das ist im Falle des Exit-Code (Returnvalue) nicht richtig.
Der wird an die aufrufende Shell zurückgegeben und steht wie schon gesagt in $? zur Verfügung.
Die musst du aber unmittelbahr nach dem Ende des Scriptes abrufen und speichern oder abfragen, da diese Variable ja von jedem weiteren Aufruf verwendet wird.
Code:
#!/bin/sh
/usr/bin/perl perlscript.pl
echo "Returnwert ist $?"
echo "Returnwert ist nun $?"
Liefert nun:
wolle@Nietzsche$ Returnwert ist 77
wolle@Nietzsche$ Returnwert ist nun 0

Beim zweiten mal, ist der Wert nämlich schon vom Returnwert des ersten echo Befehls überschrieben. Hier also 0.

Das nur mal zum Verständnis.
Gruß Wolfgang
 

Ähnliche Themen

Script pausieren bis Bedingung erfüllt ist

nach ssh-login auswerte ob passwortabfrage komt oder nicht

Inhalt einer Variable als Programmaufruf starten

screen nach Programmende aktiv halten oder in die Shell

wxPython Problem

Zurück
Oben