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 -- Mark Burgess ------------------------------------------------- Professor of Network and System Administration Oslo University College, Norway Personal Web: http://www.iu.hio.no/~mark Office Telf : +47 22453272 ------------------------------------------------- _______________________________________________ Bug-cfengine mailing list Bug-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/bug-cfengine