GLib provides the functions
to handle shell-like quoting in strings. The function
parses a string similar to the way a POSIX shell (/bin/sh) would.
Note that string handling in shells has many obscure and historical corner-cases which these functions do not necessarily reproduce. They are good enough in practice, though.
gboolean g_shell_parse_argv (
const gchar *command_line,
Parses a command line into an argument vector, in much the same way
the shell would, but without many of the expansions the shell would
perform (variable expansion, globs, operators, filename expansion,
etc. are not supported). The results are defined to be the same as
those you would get from a UNIX98 /bin/sh, as long as the input
contains none of the unsupported shell expansions. If the input
does contain such expansions, they are passed through
literally. Possible errors are those from the G_SHELL_ERROR
domain. Free the returned vector with
command line to parse.
return location for number of args.
return location for array of args.
|[out][optional][array length=argcp zero-terminated=1][element-type filename]|
return location for error.
Quotes a string so that the shell (/bin/sh) will interpret the
quoted string to mean
. If you pass a filename to
the shell, for example, you should first quote it with this
function. The return value must be freed with
quoting style used is undefined (single or double quotes may be
Unquotes a string as the shell (/bin/sh) would. Only handles
quotes; if a string contains file globs, arithmetic operators,
variables, backticks, redirections, or other special-to-the-shell
features, the result will be different from the result a real shell
would produce (the variables, backticks, etc. will be passed
through literally instead of being expanded). This function is
guaranteed to succeed if applied to the result of
g_shell_quote(). If it fails, it returns
NULL and sets the
need not actually contain quoted or
g_shell_unquote() simply goes through the string and
unquotes/unescapes anything that the shell would. Both single and
double quotes are handled, as are escapes including escaped
newlines. The return value must be freed with
errors are in the G_SHELL_ERROR domain.
Shell quoting rules are a bit strange. Single quotes preserve the literal string exactly. escape sequences are not allowed; not even \' - if you want a ' in the quoted text, you have to do something like 'foo'\''bar'. Double quotes allow $, `, ", \, and newline to be escaped with backslash. Otherwise double quotes preserve things literally.
Types and Values
Error codes returned by shell functions.