YAML中使用#字符不被解析为注释的解决方法
YAML内编写含
#的文件字符移除命令解决方案 YAML默认将无引号包裹场景下的#识别为注释起始标记,直接写入带#的Shell命令会导致后续内容被解析为注释无法执行,针对你要运行的echo $(tr -d '[\[\]#,"]')命令,有三个可直接落地的变通方案:
- 用YAML双引号包裹整个命令值
YAML双引号包裹的字符串中,#不会被识别为注释标记,仅需要把字符串内部的双引号做转义即可,示例配置:exec_cmd: "echo $(tr -d '[\[\]#,\"]')" - 用YAML单引号包裹整个命令值
YAML单引号包裹的字符串会把所有内容解析为普通字面量,不需要转义大部分特殊字符,仅需要把字符串内部的单引号替换为两个连续单引号完成转义,写法更简洁:exec_cmd: 'echo $(tr -d ''[\[\]#,"]'')' - 改写命令避开直接书写
#字符
可以通过Shell支持的ASCII转义语法表示#,不需要额外给整段命令加引号也不会触发YAML注释解析,#对应的八进制ASCII编码为\043,改写后命令示例:
执行效果和原命令完全一致,会正常移除exec_cmd: echo $(tr -d '[\[\]\043,"]')[、]、#、,、"几类指定字符。
内容的提问来源于stack exchange,提问作者Alberto Oliveira
相关产品推荐
相关产品推荐

