Hi, >> In one of my modules, I have the following: >> >> exec { "/bin/sed -i '\~^${line}$~d' '${file}'": >> >> The '\~' is there, to make sed use '~' as the command separator instead of >> '/', which is too common in the lines I am trying to delete. >> >> However, the puppet master now complains: >> >> Dec 27 14:07:11 offman01 puppet-master[821]: Unrecognised escape sequence >> '\~' in file /etc/puppet/modules/common/manifests/definitions/line.pp at >> line 15 >> >> Should I worry about that? > > Yes. > > You probably want sed to see the backslash (so as to keep the shell from > expanding ~ to $HOME? I'm not sure exec runs in a full-fledged shell, > but I digress). > > The warning tells you that puppet ignores your attempt at escaping > something, so the backslash is silently dropped. > > Long story short - you need to > a) drop the unnecessary escape (optional) or > b) escape the backslash itself (critical), > depending on what you need to happen. > > In your case, b.
Ah well, but the sed line actually works as expected, so my guess is, that Puppet may silently drop the backslash when setting the name/title of the resource, but it does not when it executes the code. If Puppet would drop the backslash, it would surely result in a sed error. If I test it on the command line, I get: /bin/sed: -e expression #1, char 2: unknown command: `^' Would it make sense to craft a $name for the resource without the escape sequence, and set the command explicitly with 'command => /bin/sed -i ...' ? Best regards, Martijn. -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.