exec 2> >(Log)
And then I added my Log function to the script
Log() { if [ -z "$1" ]; then read Message else Message="$1" fi .... }
And it was working great, until I tested it in Born Shell. Here I got an redirect error. So I needed to look around for another way to do this and I stumbled across an article from Chris Siebenmann. This is a great example, but I needed to append this to the whole script and not just one single command. This however was easy enough, I just needed to append a sub-process to all of my script content.
Log() { if [ -z "$1" ]; then read Message else Message="$1" fi if [ -n "$Message" ]; then .... fi } exec 3>&1 ( .... Execute everything from here ) 2>&1 >&3 3>&- | Log
Now everything from stderr will be parsed to the function, and it will work with both Bash and Sh.
No comments:
Post a Comment