Thread stdout/stderr eines Kommandos (Backticks) ausgeben: die vordefinierte Perl-Variable $?
(5 answers)
Opened by Joseba at 2007-07-21 15:00
soweit ich weiß, geben die meisten (unix) tools bei einem fehler eine zahl ungleich null zurück, ob das jetzt 256 oder 1 oder was auch immer ist. (die konkrete zahl kann dann allerdings noch information über den konkreten, aufgetretenen fehler geben.)
zu deinem beispiel: was du ja machst, ist dass du stderr auf stdout umleitest. damit enthält dann $output den inhalt beider streams. allerdings machst du einen gedankenfehler, wenn du meinst, dass bei einem fehler NUR auf stderr geschrieben wird, bzw. wenn alles glatt läuft NUR auf stdout geschrieben wird. so werden zb bei nicht-fatalen fehlern oft warnungen auf stderr geschrieben (das tool gibt dann trotzdem 0 zurück), bzw. kann auch schon vor abbruch mit fehlercode etwas auf stdout geschrieben worden sein. wenn du beides separat auswerten willst, dann zb über zwei temporäre files: Code: (dl
)
foo > foo.stdout 2> foo.stderr (temp files dann allerdings mit der entprechenden routine aus File::Temp generieren) |