如何替换Ansible变量值中的指定字符?以点号转横杠为例
错误原因
你的replace过滤器没有放在Jinja2表达式的{{ }}边界内部,导致整个过滤语句被当成普通字符串拼接在了版本号后面,没有触发过滤逻辑。
正确实现方法
方法1:直接使用replace过滤器(推荐)
将整个过滤逻辑放在大括号内部即可,该方法兼容Ansible 2.9.6版本:
- name: 替换版本号中的点为横杠 set_fact: joomlaversion2: "{{ joomlaversion | replace('.', '-') }}"
方法2:拆分后拼接实现
你提到的先拆分再拼接的方案也可以正常运行,写法如下:
- name: 替换版本号中的点为横杠 set_fact: joomlaversion2: "{{ joomlaversion.split('.') | join('-') }}"
结果验证
可以添加debug任务确认转换结果符合预期:
- name: 打印转换后的版本号 debug: var: joomlaversion2
执行后输出的joomlaversion2值即为4-0-2。
内容的提问来源于stack exchange,提问作者TryHarder
相关产品推荐
相关产品推荐

