Description
(New in Rush 103.00)
Optional.
Sets optional flags that affect how the render command
is executed.
The following flags are supported:
CommandFlags Options
|
quote
|
Honor double quotes in the render command.
This can be used to protect spaces in command arguments.
|
escape
|
Honor escape characters (\) in the render command.
Use this to escape certain characters (like '$' and '"').
Use this to protect quotes-within-quotes (if 'quote' is specified)
and to protect '$' (if 'expandvars' is specified)
|
expandvars
|
Expand environment variables in the render command
before it's executed. Variables can be specified in the format ${VARNAME}
across both platforms.
|
useshell
|
Run the render command in a native shell.
Under windows this means a DOS "cmd" shell.
Under unix this means a Bourne /bin/sh.
|
off
|
Disable all the above flags.
This is the default behavior if commandflags aren't specified.
|
Quote
Use the 'quote' option if you intend to pass a command that includes quoted
arguments to protect spaces. Use the 'escape' option if you are including
escape characters to escape quotes.
For instance, to get the desired results to run the command:
perl -e "print \"Hello world!\\n\";"
..then you would use these two options. eg:
rush -submit << EOF
:
commandflags quote escape
command perl -e "print \"Hello world!\\n\";"
:
EOF
ExpandVars
Use the 'expandvars' option if you intend to have environment variables
in your command, and want them expanded at runtime. This uses the ${VARNAME}
syntax across platforms, so for instance ${RUSH_JOBID} will expand to the
job's jobid on both unix and windows machines. eg:
rush -submit << EOF
:
commandflags expandvars
command /bin/echo Rush jobid=${RUSH_JOBID}, user=${USER}, frame=${RUSH_FRAME}.
:
EOF
Escape
If you find the need to escape some of the characters with '\', combine 'escape' with
'expandvars', eg:
rush -submit << EOF
:
commandflags expandvars escape
command /bin/echo The value of \${RUSH_FRAME} is ${RUSH_FRAME}.
:
EOF
Note that enabling the 'escape' flag means that all backslashes will
be interpreted as escape characters, so to have actual backslashes in
the command or arguments, you'd need to double them up, eg:
rush -submit << EOF
:
commandflags expandvars escape
command cmd /c \\\\path\\to\foo.bat -arg1 -arg2
:
EOF
UseShell
Use the 'useshell' option to tell Rush to run the render command
in the operating system's native shell at render time. Under unix this
is '/bin/sh -c', and under windows this is "cmd /c".
Use this option if you need access to shell features as part of your command.
(For instance, redirection, wildcards, or native variable expansion).
As an example, if you want to run DOS internal commands like DIR or ECHO,
you can enable the 'useshell' option to access them, e.g.
rush -submit << EOF
:
commandflags useshell
command dir c:\temp
:
EOF
If 'useshell' wasn't specified, the 'dir c:\temp' command would likely
fail with a 'Command not found' error. This is because 'dir' is not really
an executable, but is a DOS-specific internal command.
Note: using shell-specific syntax may make your commands non-portable
across platforms. If you need shell specific behavior, it's better to have your
render script handle executing your commands in the shell you want, so you can
include logic that checks which platform it's running on, and behaves as needed.
Off
'off' indicates no command flags; the default behavior is to be used.
This is the same as not specifying the commandflags at all.
See Also
|