Rückgabe von falschen wert

S

Stiffler66

Grünschnabel
Hallo zusammen,

bin neu im unix umfeld!:(
habe folgendes Problem und hoffe bin hier an der richtigen adresse.
Ich führe aus java heraus ein shell script aus.
bsp

test.sh

echo hallo welt
return 1

nun brauche ich den return value und muss diesen in meinem java programm speichern.
Ich bekomme allerdings immer den Rückgabewert 127

Mein programm läuft wenn ich es unter linux starte mit ksh
es läuft auch unter windows für batch files.
Nun ist es aber so das ich ein zielsystem habe, welches Windows ist aber mit einem Unix emulator arbeitet(MKS toolkit).
wenn ich die Scripte dort ausführe ist ende im gelände mein programm liefert als ersten return wert 127 oder 0 und beim 2ten nachfolgenden script hängt er sich auf .
Meine Vermutung ist, das ich den Rückgabewert eines anderen prozessen bekomme, aber wie gesagt ?! finde auch im inet nichts


Bin verzweifelt bin über jede hilfe danke
gruß
Stiffler
 
Bin kein Java-Programmierer, dennoch waere es zunaechst interessant zu wissen, mit welchem Befehl Du das Skript von Java aus aufrufst. Dann solltest Du in einer Java-Referenz nachschauen, welchen Rueckgabewert dieser Befehl hat.
Wenn das dann alles zu Deinen Erwartungen passt, d.h. zum Beispiel, wenn dieser Befehl den Rueckgabewert des Skriptes zurueckgeben sollte, ist es Zeit zu debuggen. Anfangen wuerde ich damit, dass ich aus Java heraus die Befehle '/bin/true' bzw. '/bin/false' aufrufen wuerde, um zu schauen, was dort die Rueckgabewerte sind.
 
Hallo Ricola
aufrufen tuhe ich das script über

int returnVal = Runtime.getRuntime().exec("ksh "+file.getabsolutePath).waitFor();

Frage:
was bewirken /bin/true ?

ich weiss das mein Script ausgeführt wird da ich einen sleep im script habe und daran erkenne das das erste script gestartet wurde bekomme dann ein falschen return value
und das zweite script hängt sich dann auf
 
/bin/true hat immer einen Rückgabewert von 0
/bin/false hat immer einen Rückgabewert von 1

Jedes Programm unter Linux/Unix sollte bei korrektem Beenden eine 0 zurückggeben.

mfg
HeadCrash
 
aso
ja das funktioniert
das ist nicht das problem, das problem ist das ich bedinungen für Rückgabewerte habe
in dem jeweiligen script
wenn bedinung erfüült return 1 wenn nicht erfüllt return 0
 
Wenn sich Dein Skript aufhaengt, dann solltest Du zunaechst das Skript korrigieren. Oder ist es vielleicht doch der Aufruf des Skriptes von Java heraus, bei dem es zu einem Haenger kommt? Wenn ja, an welcher Stelle im Skript? - Um das herauszufinden, koenntest Du zum Beispiel nach jeder Anweisung im Skript ein 'echo' mit der Zeilennummer einfuegen, damit Du die Stelle findest.

Ich versuche mit meinen Vorschlaegen, das Problem einzugrenzen, um es ausfindig zu machen.
 
ich glaube nicht das es an dem script liegt da, wenn das script normal aus der kommandozeile aufgerufen wird korrekt ausgeführt wird.
Das wenn ich es aus java heraus auf Windows ausführe arbeitet es korrekt(.bat)
Von Linux = korrekt (.sh)
von Windows mit Unix emulator (MKS toolkit)=fehler
 
Na, und an welcher Stelle im Skript tritt der Fehler nun auf?
 
Genau das versuche ich im moment ehrauszufinden am script selber liegt es nicht.
Habe jetzt allerdings eine mögliche fehlerursache gefunden melde mich wenn es funktionieren sollte.
Vielen dank rikola.
Werde deine Hilfe in zukunft noch öfter brauchen weil ich auf den geschmack von unix gekommen bin :)
 

Ähnliche Themen

Ubuntu X / dbus problem

Zurück
Oben