如何使用命令参数正确转义要传递到 shell 的字符串

如何使用命令参数正确转义要传递到 shell 的字符串

如何正确转义任意命令?


例如:

sudo -u chris sh -c 'echo "\"leftright\""'

上面的回响:

"leftright"

我将如何回显:

"left'right"

我已经尝试了以下方法,我希望这些方法可以工作,但没有:

sudo -u chris sh -c 'echo "\"left\'right\""'

我不太明白它是如何解析的。

答案1

sudo -u chris sh -c 'echo "\"left'\''right\""'

答案2

 sh -c 'echo "\"left'"'"'right\""'

或者

 sh -c 'echo "\"left'\''right\""'

将工作。

以上任何一项都会通过

 echo "\"left'right\""

-c

当您位于单引号字符串内时,除了关闭该字符串之外没有任何转义。

要传递单引号,您可以使用

 "'"

或者

 \'

shell 将连接之间没有输入字段分隔符(通常是空格)的相邻参数。

相关内容