[clug] Next in my series of "how to do things in /bin/sh that you probably shouldn't".
David.Deaves at dd.id.au
Thu Aug 20 06:32:36 MDT 2009
> > Not that I've tried it, but using process substitution to get bash to
> > automatically do the pipe magic might work?
> > exec > >(tee logfile.txt) 2>&1
> Hrm, this certainly works as a bash script but the prompt is ahead of
> itself after running it? I suspect as the script finishes and the
> prompt is returned before the tee is. I'd have to add a wait on the
> tee (presuming I can get its PID) at the end I would guess.
> Still a whole lot shorter!
Those bash process substitutions can do some pretty cool thing, but they
are a bit strange. "$!" will get the PID of the process, however you cannot
wait on it with or without the PID argument. Recently I worked around it with:
while kill -0 $sub_proc_pid
and had to pass status through a file.
But a simpler solution to the above problem is :
exec > >(tee logfile.txt) 2>&1
exec >/dev/null 2>&1 # Close the inputs to the tee
sleep 2 # Yield and give tee some time to wrap up
More information about the linux