首页 新闻 会员 周边 捐助

ansible的debug的msg看官网上是str类型,msg: value ,但这个value不仅仅是str?

0
[已关闭问题] 关闭于 2025-07-15 14:43

ansible的debug的msg看官网上是str类型,msg: value ,但这个value不仅仅是str,还可以是list,dict,用jinja,msg: "{{value}}" ,这个“{{value}}”虽然有双引号,但是jinja2引擎解析后,也可以是list,dict,不代表是字符串

_java_python的主页 _java_python | 小虾三级 | 园豆:984
提问于:2025-07-15 14:37

Jinja2 模板引擎的动态解析特性
双引号内的 {{ value }} 不是普通字符串
当使用 msg: "{{ value }}" 时:

双引号只是 YAML 的语法要求(防止 { 被误解析为字典)。

Jinja2 会在任务运行时动态解析 {{ value }},根据变量 value 的实际类型渲染结果。

最终输出的是 value 的原始数据类型(如 list/dict),而非字符串。

_java_python 3个月前
< >
分享
所有回答(1)
0
  • debug:
    msg: "{{ [1, 2, 3] }}" # 输出列表:[1, 2, 3]

  • debug:
    msg: "{{ {'key': 'value'} }}" # 输出字典:

msg 参数实际接受任意类型
虽然文档标注为 string,但源码中 msg 是通用参数,内部会智能处理数据类型:

若值为字符串 → 直接输出。

若值为 list/dict → 自动调用 to_nice_json() 或类似方法转换为可读格式

_java_python | 园豆:984 (小虾三级) | 2025-07-15 14:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册