如何正确转义cloud-init runcmd部分中的特殊字符?

问题描述 投票:0回答:1

我正在尝试在“runcmd”块内编辑 YAML 文件。在 Bash 中,我的命令按预期工作。这是:

yq -i '.block1 += {"path": "dir1"} ' /ws1/project.yml
.

但是,它在“runcmd”块中不起作用。当我将此命令包含在 runcmd 块中时,它会完全破坏我的 cloud-init。我无法访问主机,因为我添加 SSH 密钥的 user 块不起作用。

您能告诉我如何正确转义特殊字符以确保cloud-init正确执行吗?

但是,更简单的命令,例如

yq -i '.block1 += "path" ' /ws1/project.yml
功能正常并且不会破坏整个云配置。我尝试了各种方法来转义双引号、大括号、冒号和 dir1 之前的空格,但没有成功。

bash escaping sh cloud-init yq
1个回答
0
投票

Runcmd 允许不需要转义的列表语法:

runcmd:
  - [yq, -i, '.block1 += {"path": "dir1"} ', /ws1/project.yml]
© www.soinside.com 2019 - 2024. All rights reserved.