Filter Ansible-如何在筛选器中转义嵌套的Jinja

Filter Ansible-如何在筛选器中转义嵌套的Jinja,filter,ansible,jinja2,Filter,Ansible,Jinja2,我想在筛选器中使用嵌套的jinja表达式,但未能做到这一点 我有一个如下所示的变量文件: NAME: "test" VAR: ["a","b","c-test","d", "t-test"] 现在,我想在同一个变量文件中使用ansible过滤器从VAR列表中提取一个特定的字符串 我试过: NAME: "test" VAR: ["a","b","c-test","d","test-t"] testc: "{{ VAR | select('match', 'c-{{ NAME }}') | li

我想在筛选器中使用嵌套的jinja表达式,但未能做到这一点

我有一个如下所示的变量文件:

NAME: "test"
VAR: ["a","b","c-test","d", "t-test"]
现在,我想在同一个变量文件中使用ansible过滤器从VAR列表中提取一个特定的字符串

我试过:

NAME: "test"
VAR: ["a","b","c-test","d","test-t"]

testc: "{{ VAR | select('match', 'c-{{ NAME }}') | list }}"
testt: "{{ VAR | select('match', '{{ NAME }}-t') | list }}"

没有成功

我在“选择”之外的过滤器中使用嵌套的Jinja也有同样的问题


如何在ansible筛选器中使用或转义嵌套的jinja表达式?

不能嵌套双花括号。双花括号内的名称已作为变量进行计算,因此无需将它们括在另一对双花括号中进行计算。您只需使用连接运算符
~
将字符串literal
'c-'
与变量
NAME
直接连接即可:

test: "{{ VAR | select('match', 'c-' ~ NAME) | list }}"
test: "{{ VAR | select('match', NAME ~ '-t') | list }}"

如果VAR也有“test-t”,那么如何转义“~”?我试过反斜杠,但没用。我不知道你所说的
VAR
还有
“test-t”
是什么意思,以及你为什么要逃避
“~”
。你能发布你的尝试代码吗?我再次编辑了这个问题,告诉你我指的是什么“VAR”。我想知道当变量排在字符串前面时如何使用~非常感谢!学习新事物。
test: "{{ VAR | select('match', 'c-' ~ NAME) | list }}"
test: "{{ VAR | select('match', NAME ~ '-t') | list }}"