[PLUG] More Scripting Fun!

Jason Van Cleve jason at vancleve.com
Sat Jun 22 14:33:05 UTC 2002


Hi ho,

Me again, with a subtle bash befuddlement.  I want to allow a variable
to control how a command's output is redirected, so I figure I'll just
append the variable to the command, right?  If the variable is empty, no
problem; and if it contains ">& /dev/null", it should redirect all the
output into the Great Unknown, right?  Alas, it is not so.

I'm working with bash 2.05a, for your info, and I'm inside a function in
a script file, where I have this line:

	$COMMAND $* ${COMMAND_SUFFIX}

$COMMAND contains the path to apachectl, $* contains simply "start", and
$COMMAND_SUFFIX is defined thus:

	COMMAND_SUFFIX='>& /dev/null'

And the unexpected result is that apachectl spews out it's "usage:"
message twice in a row, apparently once for ">&" and once for
"/dev/null".  If, on the other hand, I substitute the presumably
equivalent line:

	$COMMAND $* >& /dev/null

then the command executes silently, as desired.  So I'm missing some
subtlety of variable expansion, because I'm at a complete loss with this
one.  What's going on here, and more importantly, is there a clean way
around this problem?  All I can think to do is to split $COMMAND_SUFFIX
into multiple variables.

What do you fellows make of this?

--Jason Van Cleve




More information about the PLUG mailing list