shell命令cmd可能有空格,单引号和双引号。
如何转义这些引号以将命令正确传递给POSIX shell:
>dash -c '
{CMD {1}}
另一个问题是双重问题,询问双引号。其中一个答案可能会起作用 - 拆分命令并使用连接引号。例如,如果cmd是
'
然后我们将其转换为
cd "dir"; ls 'foobar'
这很麻烦......有没有更简单的方法?
补充:似乎没有人理解我...我只想要一个通用程序,一个算法,它接受输入,一个字符串(完全精确,由ASCII中0到127之间的可打印ASCII字符组成)表)和输出,第二个字符串。要求是如果第一个字符串像这样执行
>dash -c 'cd "dir"; ls '"'foobar'"
结果与
相同POSIX_shell>string1
我现在更清楚了,请告诉我。
答案 0 :(得分:1)
首先,尽量避免像你提到的那样混乱。如果必须,保持简单,单引号内的所有双引号都没有问题。双引号内的所有单引号都不应成为问题。
#Example:
echo '"These are double quoted"'
echo "'These are single quoted'"
第三个(如果可能的话,请杂乱并避免这种情况),您需要在单引号中使用的任何单引号都必须使用多个引号进行转义。
echo ''"'"'These are all single quoted, but messy'"'"''
第四,双引号内的双引号应使用反斜杠\
echo "\"These are double quoted\""