Archiv verlassen und diese Seite im Standarddesign anzeigen : Pipes in der Shell
morpheus2001
27.01.07, 13:36
Hi,
ich möchte mithilfe von Pipes die Standardausgabe eines Scripts in ein anderes übertragem:
script1 | script2
Soweit sogut, die Ausgabe von script1 kann ich über stdin in script2 auffangen und weiterverarbeiten. Jetzt kommt das Problem: Ich möchte die Rückgabewerte beider Programm betrachten:
script1 | script2
echo ?$ # Gibt den Rückgabewert von script2 zurück
Hat jemand eine Idee, wie ich an den Rückgabewert von script1 rankomme?
MfG
D.Morlock
script1 | tee output_script1.txt | script2
dann wird die ausgabe von script1 noch in die datei output_script1.txt geschrieben
moe
script1 | tee output_script1.txt | script2
dann wird die ausgabe von script1 noch in die datei output_script1.txt geschrieben
Er wollte aber nicht die Ausgabe sondern den Rückgabewert.
stimmt :-) bei genauerem Lesen stellt man das fest
moe
Man könnte vielleicht im zweiten Skript als erstes den Rückgabewert in einer anderen Variablen speichern. Diese kann dann weiterverarbeitet oder exportiert werden. Vielleicht lieg ich da ber auch völlig falsch...
Da es scheinbar noch nicht ganz klar rüberkam hier ein Beispiel:
# ls -1 | grep Weltraum | grep 200
# echo Rückgabewerte waren: ${PIPESTATUS[@]}
Rückgabewerte waren: 0 0 1
# ls -1 | grep Weltraum | grep 200
# for i in "${PIPESTATUS[@]}"
do
test $i != 0 && echo 'Ein Fehler trat auf!'
done
Ein Fehler trat auf!
# ls -1 | grep Weltraum
# echo Erster Rückgabewert war: ${PIPESTATUS[0]}
Erster Rückgabewert war: 0
# asdfgh | grep Weltraum
bash: asdfgh: command not found
# echo Erster Rückgabewert war: ${PIPESTATUS[0]}
Erster Rückgabewert war: 127
morpheus2001
29.01.07, 20:16
Hi,
danke für die ausführliche Hilfe ;-)
PIPESTATUS war exakt das, was ich gesucht hab! :) Danke Euch!
Gruß
Daniel
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.