shell 如何将命令参数中的引号转义为sh -c?[副本]

zqdjd7g9  于 12个月前  发布在  Shell
关注(0)|答案(1)|浏览(108)

此问题已在此处有答案

How can I escape a double quote inside double quotes?(10个答案)
7年前关闭。
社区在8个月前审查了是否重新打开此问题,并将其关闭:
原始关闭原因未解决
shell命令可以有空格、单引号和双引号。
如何转义这些引号以正确地将命令传递给POSIX shell,如下所示?
>dash -c '命令'
另一个问题被指出是重复的,并询问双引号。其中一个答案可能会起作用-拆分命令并使用连接的引号。例如,如果命令是

cd "dir"; ls 'foobar'

然后我们将其转化为

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

太乱了...有没有更简单的办法?
我只需要一个通用的过程,一个接受输入的算法,一个字符串(完全精确地说,由ASCII表中从0到127的可打印ASCII字符组成),并输出第二个字符串。要求是如果第一个字符串像这样执行

POSIX_shell>string1

其结果是相同的

>POSIX_shell -c string2
hsgswve4

hsgswve41#

首先,尽量避免你提到的混乱的事情。如果必须这样做,请保持简单,将所有双引号放在单引号内不会有任何问题。双引号内的所有单引号应该没有问题。

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

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

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

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

echo "\"These are double quoted\""

相关问题