[TriLUG] bash question

Jeremy Portzer jeremyp at pobox.com
Wed Oct 17 19:11:35 EDT 2007


Joseph Mack NA3T wrote:
> On Wed, 17 Oct 2007, David Brain wrote:
> 
>> Smells nasty, but...
>>
>> CMDA="ls |"
>> CMDB="wc -l"
>> bash -c "$CMDA$CMDB"
> 
> hmm, it's the "-c" that I've been missing. If I leave it 
> out, then I get the same error that lead to my original 
> posting.
> 

You can also use "eval"

CMDA="ls |"
CMDB="wc -l"
eval "$CMDA$CMDB"

This avoids starting up a whole new bash process (though I think the 
evaluated command is still considered a "subshell" - but at least not a 
separate process.)

"eval" is a command available in most scripting languages that is used 
to compile/run an arbitrary command based on calculated data.  It's a 
useful construct in many situations though it can be over-used, and can 
be a major security issue if the data to be evaluated is un-trusted.

--Jeremy



More information about the TriLUG mailing list