On 04/27/2012 05:12 AM, Stefan Berger wrote:
On 04/26/2012 05:13 PM, Eric Blake wrote:
> On 04/23/2012 06:20 AM, Stefan Berger wrote:
>
>
>> + if [ -n "${cmd}" ]; then
>> + eval "${cmd}" 2>&1 1>/dev/null
> This says output any errors from command to our stdout, and to ignore
> normal output of $cmd. Is that what you meant, or did you want to
> ignore both output and errors from $cmd, in which case you should swap
> the redirection operators?
The intention was to not get any output from running those test
commands. Above unfortunately only solved this for stdout but not for
suppressing stderr, so 'ipset: command not found' was still printed. Now
I changed this line to
eval "${cmd}" 2>/dev/null 1>/dev/null
and everything is quiet. Not quite sure why the previous notation didn't
work...
Using '2>&1 1>/dev/null' says:
start with stdout (1) and stderr (2) inherited from the parent
change fd 2 to be copied from the current fd 1 (the parents stdout)
change fd 1 to be /dev/null
now the child discards output, and sends errors into the parent's stdout
Using '2>/dev/null 1>/dev/null' says:
start with stdout and stderr inherited from the parent
change fd 2 to be /dev/null
change fd 1 to be /dev/null
now the child discards everything
Swapping the order, and using '>/dev/null 2>&1' says:
start with stdout (1) and stderr (2) inherited from the parent
change fd 1 to be /dev/null
change fd 2 to be copied from the current fd 1 (/dev/null)
now the child discards everything
In other words, all you did wrong was forgetting that redirections are
honored left-to-right.
I will post a V2. For this patch to go in I'll also need an ACK
for the somewhat longer patch for ipset support:
http://www.redhat.com/archives/libvir-list/2012-April/msg01226.html
Yep, on my list to review.
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org