如何在 ssh 命令中转义引号?

如何在 ssh 命令中转义引号?

我们可以通过 ssh 运行命令:

$ ssh user@host bash -c "'echo x '"
x

然而我发现我无法逃脱'

$ ssh user@host bash -c "'echo \''"
bash: -c: line 0: unexpected EOF while looking for matching `''
bash: -c: line 1: syntax error: unexpected end of file

我也尝试过,\\但没有任何作用。\\\\\\\

这个想法是传递类似的东西ls -1tr /var/log/ | head -10 | xargs -d '\n' -I {} echo {}。但\'不起作用,所以我不知道如何通过'\n'。我怎样才能实现这个目标?

答案1

当你发现自己在引用地狱时,heredocs 通常会有所帮助

ssh user@host bash <<END
echo \'
END

话虽这么说,单引号字符串无法包含单引号

答案2

GNU Parallel 在内部多次引用字符串。您可以将引用引擎用于:

$ parallel --shellquote
write your string here, which may contain ' or " or \n
ctrl-D

如果您需要引用两次:

parallel --shellquote --shellquote

为了娱乐:

echo "'" | parallel --shellquote --shellquote --shellquote --shellquote --shellquote --shellquote

相关内容