Mark,

this is indeed a bug. Read carefully my example and try it. It fails
because of the ${const.dollar}(cat /etc/hosts), eg
only because ${const.dollar} is followed by  ( ... ). In your example
you don't have that, $(const.dollar)y works fine
because it does not reproduce the bug at all. With my example,
cf-engine will **refuse** to run the command and launch the
shell.

Please try with my example and see for yourself.


On Thu, Dec 10, 2009 at 11:01 PM, Mark Burgess <mark.burg...@iu.hio.no>wrote:

>
> This is not a bug in cfengine, it is the shell that is turning the $ into
> nothing.
> Cfengine interprets the string correctly and passes it to the shell as this
> shows.
>
>  "MyClass" expression =  "MyClass" expression => returnszero("/bin/echo x
> $(const.dollar)y", "useshell");
>
> x
>
> > returnszero("/bin/echo x $(const.dollar)y", "noshell");
>
> x $y
>
>
> Jean-Noël Rivasseau wrote:
> > Hello, I discussed this issue in the help ML before but it really
> > appears like it is a bug.
> >
> > Basically, cf-engine chokes on ${const.dollar}( ... ) in command strings
> > passed to returnszero function. However $() in a shell (Bash) can be
> > very useful as it triggers a subshell. There is a bug in the parser
> > somewhere as this example demonstrates:
> >
> > body common control
> > {
> >     bundlesequence => {"configurePhase"};
> > }
> >
> > bundle agent configurePhase
> > {
> >         classes:
> >                 "MyClass" expression => returnszero("/bin/echo
> > ${const.dollar}(cat /etc/hosts)", "useshell");
> >                 "MyClass2" expression => returnszero("/bin/echo `cat
> > /etc/hosts`", "useshell");
> >         reports:
> >         MyClass::
> >                 "Hi World";
> >         MyClass2::
> >                 "Hello World";
> > }
> >
> >
> > MyClass2 will correctly be defined, but not MyClass as cf-engine will
> > refuse to run the first command - the parser gets confused and attempts
> > to solve 'cat /etc/hosts' as a variable it seems. I checked this on
> > today's SVN and the problem is still present. Please correct it :)
> >
> > Cheers
> > Jean-Noel
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Bug-cfengine mailing list
> > Bug-cfengine@cfengine.org
> > https://cfengine.org/mailman/listinfo/bug-cfengine
>
_______________________________________________
Bug-cfengine mailing list
Bug-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/bug-cfengine

Reply via email to