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 <[email protected]>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
> > [email protected]
> > https://cfengine.org/mailman/listinfo/bug-cfengine
>
_______________________________________________
Bug-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/bug-cfengine