The shell command may have whitespace and single and double quotes.
How can I escape these quotes to correctly pass the command to a POSIX shell, as in the following?
>dash -c '
command'
The other question pointed as a duplicate and asks about double quotes. One of the answers there is probably going to work - to split the command and use concatenated quotes. For example, if the command were
cd "dir"; ls 'foobar'
then we would transform that into
>dash -c 'cd "dir"; ls '"'foobar'"
This is messy... Isn't there an easier way?
I just want a general procedure, an algorithm that takes on input, a string (to be completely precise, made out of printable ASCII characters from 0 to 127 in the ASCII table), and outputs, the second string. The requirement is that if the first string is executed like this
POSIX_shell>string1
The result is the same as
>POSIX_shell -c string2