【发布时间】:2019-09-27 11:10:12
【问题描述】:
我正在尝试转义位于远程服务器上的以下变量:
ssh root@$HWNODEIP "echo ' set root='$getgrub'' >> /etc/grub.d/40_custom"
简而言之,我需要在变量 $getgrub 之前和之后添加一个单引号。
我尝试了几种方法,例如将它们放在双引号 (") 中并转义 (),但是没有运气。我得到的唯一结果是类似的东西,例如:“sed: -e expression #1, char 43: unknown 's'的选项”
我做错了什么,正确的方法是什么? 我还尝试存储包含单引号的 $getgrub 变量,但是它们没有出现在文件 /etc/grub.d/40_custom?!
可能我在某个地方犯了错误,但我似乎找不到它。
谢谢。
//编辑
如果我从服务器运行以下命令:
ssh root@$HWNODEIP "echo ' set root='$getgrub'' >> /etc/grub.d/40_custom"
然后我检查了变量在文件中的文件,但是前后没有单引号?
文件的输出(cat):
设置 root=EXAMPLE
应该写在哪里:
设置 root='EXAMPLE'
奇怪...
【问题讨论】:
-
试试:
ssh root@$HWNODEIP "echo \"set root='$getgrub'\"" -
没关系。我修改了你的代码并且它有效。将在一分钟内报告。这对我有用: ssh root@$HWNODEIP "echo \"set root='$getgrub'\" >> /etc/grub.d/40_custom" 请创建它作为答案。所以我可以投票给你的答案。泰!
-
不错!添加了一个答案。 :)
标签: bash parsing escaping single-quotes