问题描述
我正在使用 jinja2 来模板化超级对撞机启动文件。
我有一个变量 {{ sc_option_numOutputBusChannels }}
,我需要从中生成一个列表。
具体来说,如果 sc_option_numOutputBusChannels = 8
,那么我需要创建以下列表:
[0,2,4,6]
在行中使用:
~dirt.start(57120,[0,6]);
函数 range(0,sc_option_numOutputBusChannels,2 )
根据我的需要完全输出该列表,但我一直无法找到一种方法将 range
的输出直接用作字符串在我的模板中 - 例如这些不起作用:
~dirt.start(57120,{% range(0,2 ) %} );
~dirt.start(57120,{{ range(0,2 ) }} );
有没有办法做到这一点?
解决方法
我猜这是因为 range
本身就是一个生成器,因此需要一个使用者向 ansible 表明您已经完成了生成器管道;我所知道的最常见的是| list
- debug:
msg: ~dirt.start(57120,{{ range(0,sc_option_numOutputBusChannels,2 ) | list }} );