What function should I use to escape strings for shell command argument in C?
I have a string:
This is a string with () characters
This will be error:
echo This is a string with () characters
These are OK:
echo "This is a string with () characters"
echo This is a string with \(\) characters
Is there a predefined function convert #2 to #3 in C?
Replacing all instances of '
with '\''
then enclosing the whole string in single quotes ('
) is one safe way. This works even with embedded newlines. Another method would be to insert \
before each character, except that then you have to do some special treatment for newlines since \
followed by a newline is ignored by the shell, not treated as a literal newline. You'd have to surround newlines with '
(single quotes).