exitstatus des nicht letzten Commandos

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Pischti
Beiträge: 417
Registriert: 20.02.2002 12:54:18
Wohnort: dresden

exitstatus des nicht letzten Commandos

Beitrag von Pischti » 18.02.2004 16:55:56

hi
bei einem:
befehl1 | befehl2 | befehl3
bekommt man mit $? den exitstatus von befehl3
wie komme ich am elegantesten an den exitstatus von befehl1 ?

jemand ne idee ?
gruss pischti
debian stable

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Beitrag von spiffi » 18.02.2004 17:30:14

Wenn Du die Bash verwendest, dann geht das über die Variable PIPESTATUS. Die hält ein Array mit allen Exitcodes der letzen Pipeline.
Den exit status von befehl1 würdest Du mit ${PIPESTATUS[0]} bekommen.

Benutzeravatar
Pischti
Beiträge: 417
Registriert: 20.02.2002 12:54:18
Wohnort: dresden

Beitrag von Pischti » 18.02.2004 17:35:36

cool - danke
gruss pischti
debian stable

Benutzeravatar
Pischti
Beiträge: 417
Registriert: 20.02.2002 12:54:18
Wohnort: dresden

Beitrag von Pischti » 18.02.2004 18:35:16

noch ne frage:
erg=$(cmd1 | cmd2 | cmd3; echo ${PIPESTATUS[0]})
echo $erg
schreibt mir den exitstatus von cmd1 auch in erg

wenn ich aber jetzt den PIPESTATUS in einer extra-variablen ausserhalb von erg=$(...) haben möchte, wie macht man das ?

erg=$(cmd1 | cmd2 | cmd3; var=${PIPESTATUS[0]})
echo $var

echo $var liefert mir nichts. $(...) wird ja nicht in einer sub-shell ausgeführt.
gruss pischti
debian stable

Benutzeravatar
Pischti
Beiträge: 417
Registriert: 20.02.2002 12:54:18
Wohnort: dresden

Beitrag von Pischti » 24.02.2004 15:45:05

ich hab mich nochmal bisl in
man bash
belesen.
da steht, dass das ganze in einer sub-shell ähnlichen umgebung ausgführt wird. man kann zwar von der übergeodneten "shell" variablen lesen aber nicht verändern. alle versuche mit export sind auch fehlgeschlagen.
meine prinzipielle frage: kann es überhaupt funktionieren - wenn ja, wo muss ich ansetzen?
gruss pischti
debian stable

Antworten