如何在 using/parsing 远程变量时正确转义单引号?

How can I escape a single quote correctly in when using/parsing a remote variable?

我正在尝试转义位于远程服务器上的以下变量:

ssh root@$HWNODEIP "echo '    set root='$getgrub''   >> /etc/grub.d/40_custom"

简而言之,我需要在变量$getgrub.

前后添加一个单引号

我尝试了几种方法,比如将它们放在双引号 (") 中并转义 (),但是没有成功。我得到的唯一结果是类似的事情,例如:"sed: -e expression #1, char 43: unknown option to `s'"

我做错了什么,正确的方法是什么? 我还尝试存储包含单引号的 $getgrub 变量,但是它们没有出现在文件 /etc/grub.d/40_custom?!

可能是我哪里弄错了,但我好像找不到。

谢谢。

//编辑

如果我 运行 来自服务器的以下命令:

ssh root@$HWNODEIP  "echo '    set root='$getgrub'' >> /etc/grub.d/40_custom"

而且我检查了文件变量在文件中,但是前后没有单引号?

文件的输出(cat):

set root=EXAMPLE

应在何处阅读:

set root='EXAMPLE'

奇怪...

你需要转义 echo 的双引号:

例子

$ ssh user@server "echo \"set example='test'\" >> example.txt"

结果(example.txt 在服务器)

$ cat example.txt
set example='test'