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

How to properly escape special characters in cloud-init runcmd section?

提问人:Dim Dim 提问时间:10/19/2023 更新时间:10/19/2023 访问量:91

问:

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

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

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

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

但是,更简单的命令(例如)可以正常运行,并且不会中断整个云配置。我尝试了各种方法来转义双引号、大括号、冒号和 dir1 之前的空格,但没有一个成功。yq -i '.block1 += "path" ' /ws1/project.yml

bash 转义 sh cloud-init yq

评论


答:

1赞 falcojr 10/19/2023 #1

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

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

评论

0赞 Dim Dim 10/19/2023
非常感谢!我会努力的