我需要在json_query过滤器中传递一个变量。
这个带有固定字符串的示例正常工作(string = tutu):
- set_fact:
my_value_exist: "{{ my_json.json | json_query('contains(component.name,`tutu`)')}}"
但我需要传递一个变量,而不是tutu
- set_fact:
my_value_exist: "{{ my_json.json | json_query('contains(component.name,`{{my_var}}`)')}}"
{{my_var}}是在上一步中检索过的字符串
您是否拥有正确的语法,以便可以在参数中正确传递变量{{my_var}}?
感谢您的帮助。
此致
答案 0 :(得分:3)
为任务使用辅助变量:
- set_fact:
my_value_exist: "{{ my_json.json | json_query(qry) }}"
vars:
qry: 'contains(component.name,`{{my_var}}`'
答案 1 :(得分:0)
如果您想避免使用辅助变量,则可以通过将第二个变量包装在加号(\"
)之间的转义双引号(+
)中来直接使用第二个变量,如下所示:
- set_fact:
my_value_exist: "{{ my_json.json | json_query('contains(component.name,`\" + my_var + \"`)') }}"
我知道这是一个古老的问题,但是它可能会对某人有所帮助,因为这是google上该主题的最高结果。