====== Saving STDERR to a variable ====== Getting the (standard) output of a command into a variable (and leaving any errors to go to the display) is simple:var=`command`or, as some people prefer:var=$(command) In either case **echo $var** will then show you what was sent to STDERR. However sometimes you want to get the "error" messages into the variable and leave the normal output displayed on the screen. I say "error" in quotation marks because utilities like **time** show their own output on standard error STDERR whilst leaving the output of the command being timed going to standard output STDOUT. In this case the method is what I would call "simple, but obscure":{ stderr=$(command 2>&1 >&3 3>&-); } 3>&1 So, for the specific use case of timing a command and then being able to use the duration afterwards:{ t=$(/usr/bin/time -f %E command 2>&1 >&3 3>&-); } 3>&1 echo "Time taken = $t" If you actually want to redirect the standard output to a file at the same time, simply change the **3>&1** at the end to **3>/filename** Thanks to https://unix.stackexchange.com/questions/474177 for this bit of bash expertise. ---- [[.:|Go up]]\\ Return to [[:|main index]].