Sorry, assign stderr to a variable. On Tue, Mar 15, 2011 at 1:08 AM, James Mcphee 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 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} >> >> >> 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>" ) >> > {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} >> >> >> 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 > jmcphe@gmail.com > -- James McPhee jmcphe@gmail.com