2

shell 命令 cmd 可能有空格和单引号和双引号。

如何转义这些引号以正确地将命令传递给 POSIX shell:

>dash -c '命令'

另一个问题指向一个重复,询问双引号。那里的答案之一可能会起作用 - 拆分命令并使用连接引号。例如,如果 cmd 是

cd "dir"; ls 'foobar'

然后我们将其转换为

>dash -c 'cd "dir"; ls '"'foobar'"

这很混乱......没有更简单的方法吗?

补充:似乎没有人理解我......我只想要一个通用程序,一个算法,它接受输入,一个字符串(完全准确,由 ASCII 表中从 0 到 127 的可打印 ASCII 字符组成),并输出第二个字符串。要求是如果第一个字符串是这样执行的

POSIX_shell>string1

结果与

>POSIX_shell -c string2

我现在更清楚了,请告诉我。

4

1 回答 1

3

首先,尽量避免你提到的混乱的事情。如果必须,请保持简单,单引号内的所有双引号都没有问题。双引号内的所有单引号都不成问题。

#Example:
echo '"These are double quoted"'
echo "'These are single quoted'"

第三(混乱并尽可能避免这种情况),您想要在单引号内的任何单引号都必须使用多个引号进行转义。

echo ''"'"'These are all single quoted, but messy'"'"''

第四,双引号内的双引号应使用反斜杠进行转义\

echo "\"These are double quoted\""
于 2016-06-11T02:13:13.620 回答