K@rl: STDERR output bei Backtick-Aufruf + mehrere Kommandos

{ @res = $cmd 2>"$sterrTmp"; }

führt $cmd aus und STDERR wird in die Datei $sterrTmp umgeleitet.

o.k. soweit - nur wenn z.b. $cmd = "ls -l; dosomething"
dann wird das aufgelöst zu
ls -l
dosomething 2>die_stderror_datei

Wie bekomme ich es hin, daß sämtlicher stderr-Output umgeleitet wird, auch wenn in $cdm mehrere befehle mit ";" getrennt enthalten sind?

  1. Wie bekomme ich es hin, daß sämtlicher stderr-Output umgeleitet wird, auch wenn in $cdm mehrere befehle mit ";" getrennt enthalten sind?

    Ungetestet:
    $cmd = "(ls -l; dosomething)"

    Peter

    1. Wie bekomme ich es hin, daß sämtlicher stderr-Output umgeleitet wird, auch wenn in $cdm mehrere befehle mit ";" getrennt enthalten sind?

      Ungetestet:
      $cmd = "(ls -l; dosomething)"

      Peter

      Verallgemeinert heißt das: Du machst eine separate Shell für die beiden Kommandos auf und leitest deren Ausgabe um.
      Wie das syntaktisch geht, hängt ggf. davon ab, in welcher Shell Du bereits bist (ich kenne das Beispiel auch so wie Peter, verwende aber normalerweise nur Korn-Shell).
      Und natürlich brauchst Du eine shell dafür, d. h. Peters Lösung könnte plattformabhängig (UNIX) sein.