Passing arguments to shell commands
If you want to insert values into a command line (to be run by an exec
resource, for example), they often need to be quoted, especially if they contain spaces. The shellquote
function will take any number of arguments, including arrays, and quote each of the arguments and return them all as a space-separated string that you can pass to commands.
In this example, we would like to set up an exec
resource which will rename a file, but both the source and the target name contain spaces, so they need to be correctly quoted in the command line.
How to do it…
Here's an example of using the shellquote
function.
Add the following to your manifest:
$source = 'Hello Jerry' $target = 'Hello... Newman' $argstring = shellquote($source, $target) $command = "/bin/mv ${argstring}" notify { $command: }
Run Puppet:
ubuntu@cookbook:~/puppet$ papply No0tice: /bin/mv "Hello Jerry" "Hello... Newman"
How it works…
First we define the $source
and $target
variables, which are the two...