23. juni 2009 - 17:19
Der er
2 kommentarer og 1 løsning
Linux shell: Hvordan pipe's stderr til stdin?
Hvordan pipe'er jeg stderr fra 'appl1' til stdin på 'appl2' uden at stdout kommer med? appl1 skriver både til stdout og stderr, men jeg ønsker kun at pipe stderr til appl2's stdin. Ingen af følgende løsninger virker: A) appl1 1> /dev/null | appl2 B) appl1 1> /dev/null 2>&1 | appl2
Annonceindlæg fra Cepheo
dit første forslag piper outputtet på stdout til appl2, men eftersom du har redirected stdout til /dev/null kommer der aldrig noget dit 2. forslag redirecter først stdout til /dev/null og derefter redirecter du stderr til stdout, som jo er i et sort hul 2 (stderr) > &1 (stdout) dette burde virke appl 1>/dev/null 2> /din/appl2
eller hov ved nærmere eftertanke, nej du skal nok ikke forsøge på ovennævnte måde, det vil blot overskrive din applikation, tanketorsk fra min side
Har fundet løsningen: exec 3>&1 ; appl1 2>&1 1>&3 3>&- | appl2 ; exec 3>&- Hvis man ønsker at filtrere appl1.stdout helt væk (med ovenstående printes det til skærmen), så kan man gøre følgende: exec 3>&1 ; appl1 2>&1 1> /dev/null 3>&- | appl2 ; exec 3>&-