[Gelöst] Mit Skript Ausgabe eines anderen Skripts auslesen
[Gelöst] Mit Skript Ausgabe eines anderen Skripts auslesen
Hallo zusammen,
hätte da eine Frage. Ich habe ein Skript (a.sh), dass ein paar Aktionen macht und dann am Ende mit echo ausgibt "Success" oder "Failure". Jetzt versuche ich ein zweites Skript zu schreiben (b.sh), welches a.sh aufruft und dann per if weitergeht, je nachdem was a.sh als letztes ausgegeben hat ("Success" oder halt "Failure"). Ich habe leider keine Möglichkeit a.sh zu verändern, also exit x als return Wert kann ich nicht einbauen.
Wie kann ich die Ausgaben eines aufgerufenen Skripts innerhalb eines anderen Skript catchen?
Danke schonmal
justme2h
hätte da eine Frage. Ich habe ein Skript (a.sh), dass ein paar Aktionen macht und dann am Ende mit echo ausgibt "Success" oder "Failure". Jetzt versuche ich ein zweites Skript zu schreiben (b.sh), welches a.sh aufruft und dann per if weitergeht, je nachdem was a.sh als letztes ausgegeben hat ("Success" oder halt "Failure"). Ich habe leider keine Möglichkeit a.sh zu verändern, also exit x als return Wert kann ich nicht einbauen.
Wie kann ich die Ausgaben eines aufgerufenen Skripts innerhalb eines anderen Skript catchen?
Danke schonmal
justme2h
Zuletzt geändert von justme2h am 03.12.2017 18:53:04, insgesamt 1-mal geändert.
Re: Mit Skript Ausgabe eines anderen Skripts auslesen
Code: Alles auswählen
$(a.sh)
Code: Alles auswählen
if test "$(a.sh)x" != "Successx"
then
echo "nix ok"
else
echo "alles ok"
fi
Re: Mit Skript Ausgabe eines anderen Skripts auslesen
Danke! Da a.sh mehr Ausgaben macht, bin ich jetzt bei folgendem hängengeblieben:
Funktioniert
Code: Alles auswählen
last_line="$(./a.sh | tail -1)x"
if test $last_line != "Successx"
then
echo "nix ok"
else
echo "alles ok"
fi
Re: Mit Skript Ausgabe eines anderen Skripts auslesen
Wenn du zwischen Erfolg und Fehler unterscheiden willst, dann tue das anhand des Exitcodes! Beende also in a.sh mit `exit 0' (Success) oder `exit 1' (Failure). In b.sh machst du es dann so:
Code: Alles auswählen
if a.sh >/dev/null; then
echo okay
else
echo fehlerhaft
fi
Use ed once in a while!
Re: Mit Skript Ausgabe eines anderen Skripts auslesen
Danke für den Hinweis. Wie gesagt, ich kann a.sh nicht bearbeiten.
Re: Mit Skript Ausgabe eines anderen Skripts auslesen
Oh, das habe ich dann ueberlesen.justme2h hat geschrieben:01.12.2017 22:39:47Danke für den Hinweis. Wie gesagt, ich kann a.sh nicht bearbeiten.
Der korrekte Weg waere dann, a.sh mit einer Shell-Funktion zu wrappen, damit man einen ordentlichen Rueckgabewert bekommt, z.B. so:
Code: Alles auswählen
a_wrapper() {
last_line="$(./a.sh | tail -1)"
test "$last_line" = "Success"
return $?
}
if a_wrapper; then
[...]
Use ed once in a while!
Re: Mit Skript Ausgabe eines anderen Skripts auslesen
Danke. So ein Wrapper ist eine gute Idee