sudo -u chris sh -c 'echo "\"left'\''right\""'
Como posso escapar de comandos arbitrários?
Por exemplo:
sudo -u chris sh -c 'echo "\"leftright\""'
Os ecos acima:
"leftright"
Como eu ecoaria:
"left'right"
Eu tentei o seguinte, que eu esperaria que funcionasse, mas não:
sudo -u chris sh -c 'echo "\"left\'right\""'
Eu não consigo entender como é analisado.
sudo -u chris sh -c 'echo "\"left'\''right\""'
sh -c 'echo "\"left'"'"'right\""'
OR
sh -c 'echo "\"left'\''right\""'
funcionará.
Qualquer um dos itens acima passará
echo "\"left'right\""
após -c
.
Quando você está dentro de uma única string entre aspas, não há como escapar do fechamento da string.
Para passar uma citação única, você pode usar
"'"
ou
\'
.
O shell irá concatenar argumentos adjacentes que não tenham um separador de campo de entrada (geralmente espaço) entre eles.
Tags command-line shell quoting