On Thursday, March 30, 2017 at 12:58:46 PM UTC-5, Peter K wrote:
> I've tried exec and sed, but I couldn't figure out the necessary escaping > to get the filename variable to parse (here I test with 'abc'): > define removeMinimumUID(){ > exec { '${filename}': > command => "/usr/bin/sed -i \'s|abc|cab|g\' ${filename}", > onlyif => '/usr/bin/test -e ${filename}', > refresh => '/usr/bin/true', > provider => 'posix', > logoutput => on_failure, > } > } > > RemoveMinimumUID { "/mnt/NY_Interactive/dev/peter/puppet/abc.txt": } > > Error: > Executing: '/usr/bin/sed -i 's|abc|cab|g' '^[[0m > ^[[mNotice: > /Stage[main]/Main/Removeminimumuid[/mnt/NY_Interactive/dev/peter/puppet/abc.txt]/Exec[${filename}]/returns: > > /usr/bin/sed: no input files^[[0m > > This is only incidentally an escaping problem. The main issue is that the defined type you present uses a variable $filename from the local scope, but you do not define any such variable in the local scope. Therefore, when evaluated as a variable reference, $filename expands to nothing. You can in fact see that in the command string that the exec reports itself to be using. It looks like you meant to use $title instead, or perhaps to define $filename = $title. Having fixed that, your Exec resource ought to work despite the quoting / escaping problem associated with its title. For the record, however, you can solve that minor issue by changing the single quotes to double quotes ( "${filename}") or by omitting them altogether. Personally, though, since you're not using the command itself as the title, I would provide a more descriptive title, something like exec { "remove minimum UID in ${filename}": # ... } John -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/805a11ee-835a-4c1d-bcc3-6e174ca11caf%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.