This might be helpful (and by that I mean mostly not helpful - you can easily send stderr to a file then input a file into a variable however).
http://stackoverflow.com/questions/962255/redirecting-stderr-to-a-variable-in-a-bash-script Ben On Tue, Mar 15, 2011 at 1:08 AM, James Mcphee <jmc...@gmail.com> wrote: > Sorry, assign stderr to a variable. > > On Tue, Mar 15, 2011 at 1:08 AM, James Mcphee <jmc...@gmail.com> wrote: >> >> If you just want to assign stderr to a file and don't care about stdout, >> then the following works. >> $ var="$(cat bah 3>&1 1>&2 2>&3)" >> $ echo $var >> cat: bah: No such file or directory >> >> On Tue, Mar 15, 2011 at 12:54 AM, der.hans <pl...@lufthans.com> wrote: >>> >>> Am 14. Mar, 2011 schwätzte Bryan O'Neal so: >>> >>> moin moin, >>> >>>> Ok - if I want to direct stranded out, standard error, or both to a >>> >>> Gotta love stranded out :). >>> >>>> file I can do that. If I want to redirect standard out to a variable >>>> for latter use, I can do that. But how do I redirect standard error to >>>> a variable? >>> >>> If all else fails, you can redirect STDERR to STDOUT, '2>&1'. >>> >>> If you control whatever's giving the errors you can have it set variables >>> that are used later. >>> >>> As to capturing both to variables without using a temporary file, see the >>> bottom of the following page. >>> >>> http://mywiki.wooledge.org/BashFAQ/002 >>> >>> If you can do everything you need for one of them in a subshell, then it >>> is possible. >>> >>> ( exec 3>&1; fred=$( { output=$( ls -d /tmp /ztmp 2>&1 1>&3- ); } 3>&1; >>> echo "{$output}" | sed -re 's,/ztmp (.+),/zztop \1,'; ); echo "<$fred>" >>> >>> ( exec 3>&1; fred=$( { output=$( ls -d /tmp /ztmp 2>&1 1>&3- ); } 3>&1; >>> echo "{$output}" | sed -re 's,/ztmp (.+),/zztop \1,' >&2; ); echo >>> "<$fred>" ) >>> {ls: Zugriff auf /zztop nicht möglich: Datei oder Verzeichnis nicht >>> gefunden} >>> </tmp> >>> >>> The sed is just to show that I'm mangling the STDERR output once it's >>> been >>> tossed into a variable. >>> >>> Since $output is in a subshell you can't get to it from the normal shell, >>> but you could call a fx() to handle the data. >>> >>> ( mungestderr() { echo "{$output}" | sed -re 's,/ztmp (.+),/zztop \1,'; >>> }; >>> exec 3>&1; fred=$( { output=$( ls -d /tmp /ztmp 2>&1 1>&3- ); } 3>&1; >>> mungestderr "$output" ); echo "<$fred>" ) >>> </tmp >>> {ls: Zugriff auf /zztop nicht möglich: Datei oder Verzeichnis nicht >>> gefunden}> >>> >>> ( mungestderr() { echo "{$output}" | sed -re 's,/ztmp (.+),/zztop \1,' >>> >&2; }; exec 3>&1; fred=$( { output=$( ls -d /tmp /ztmp 2>&1 1>&3- ); } >>> >3>&1; mungestderr "$output" ); echo "<$fred>" ) >>> {ls: Zugriff auf /zztop nicht möglich: Datei oder Verzeichnis nicht >>> gefunden} >>> </tmp> >>> >>> To keep it clear you might just want to toss it into a file or named >>> pipe. >>> >>> ciao, >>> >>> der.hans >>> -- >>> # http://www.LuftHans.com/ http://www.LuftHans.com/Classes/ >>> # ABLEconf - 2011Apr02 - Free Software for Free Enterprise >>> # "Backups are irrelevant. Only restorals matter." -- der.hans >>> --------------------------------------------------- >>> PLUG-discuss mailing list - PLUG-discuss@lists.plug.phoenix.az.us >>> To subscribe, unsubscribe, or to change your mail settings: >>> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss >> >> >> >> -- >> James McPhee >> jmc...@gmail.com > > > > -- > James McPhee > jmc...@gmail.com > > --------------------------------------------------- > PLUG-discuss mailing list - PLUG-discuss@lists.plug.phoenix.az.us > To subscribe, unsubscribe, or to change your mail settings: > http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss > --------------------------------------------------- PLUG-discuss mailing list - PLUG-discuss@lists.plug.phoenix.az.us To subscribe, unsubscribe, or to change your mail settings: http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss