如何正确转义任意命令?
例如:
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 将连接之间没有输入字段分隔符(通常是空格)的相邻参数。