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

标签 shell dash-shell

<分区>

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

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

>dash -c 'cmd'

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

cd "dir"; ls 'foobar'

然后我们将其转化为

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

这太麻烦了……有没有更简单的方法?

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

POSIX_shell>string1

结果是一样的

>POSIX_shell -c string2

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

最佳答案

首先,尽量避免你提到的乱七八糟的东西。如果必须,保持简单,单引号内的所有双引号都没有问题。双引号内的所有单引号应该没有问题。

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

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

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

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

echo "\"These are double quoted\""

关于shell - 如何将命令参数中的引号转义为 sh -c?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37758773/

相关文章:

linux - 根据文件名更改特定字段

bash - 回归 : Exported Bash function lost after going through another process

bash - 您如何使用内置的纯未设置外壳程序?您可以编写不受篡改的shell脚本吗?

bash - 奇怪的破折号算术

bash - 在 POSIX shell 脚本中嵌入 Unicode 字符的最佳方法是什么?

dash-shell - Shell 脚本输入重定向异常

linux - 如何对多个 csv 文件(Linux 或 Scala)进行完全外部联接?

linux - grep 获取特定字节并将其放入从文件到新文件的列中 {shell 脚本]

linux - 如果没有错误使用linux shell脚本编译并运行程序

mysql - 如何使用Shell脚本将日常数据从Oracle表迁移到MySQL表?