Alan D. Salewski on 31 Aug 2011 11:05:11 -0700


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [PLUG] Bash I/O redirection


On Wed, Aug 31, 2011 at 11:33:31AM -0400, Julien Vehent spake thus:
> Hey Guys,
> 
*snip*
> My question is: would there be a way to put a global redirection at
> the beginning of the script ?
> something like
>    "1 > /tmp/log.txt"
> and then have all the subsequent commands go to the log file ?
> 
> 
> Thanks,
> Julien

Sure, the following does just that:


#!/bin/bash

# save wherever stdout and stderr are currently pointing
exec 3>&1
exec 4>&2

# stdout and stderr will both write
declare -r logpath='output.log'
exec 1>${logpath}
exec 2>&1

# generate some output to stdout and stderr
echo 'foo'
echo 'bar' 1>&2
echo 'baz'
echo 'quux' 1>&2

# restore stderr and stdout to their original fds
exec 2>&4
exec 1>&3

# close our temporary "hold" fds
exec 4>&-
exec 3>&-





-- 
-----------------------------------------------------------------
a l a n   d.   s a l e w s k i                   salewski@att.net
1024D/FA2C3588 EDFA 195F EDF1 0933 1002  6396 7C92 5CB3 FA2C 3588
-----------------------------------------------------------------
___________________________________________________________________________
Philadelphia Linux Users Group         --        http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug