首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >连接变量字符串的正确方法

连接变量字符串的正确方法
EN

Stack Overflow用户
提问于 2015-07-02 22:09:31
回答 3查看 143.7K关注 0票数 52

我需要从其他变量的内容创建新的变量。目前我使用的是这样的东西:

代码语言:javascript
复制
- command: echo "{{ var1 }}-{{ var2 }}-{{ var3 }}"
  register: newvar

问题是:

  • 使用{{ var1 }}...{{ varN }}会带来太长的字符串和非常丑陋的代码。
  • 使用{{ newvar.stdout }}会更好一些,但是set_fact模块的会在两次运行之间缓存事实。它不适合我。

有没有其他的解决方案?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-02 22:22:47

问得好。但我认为没有符合你标准的好答案。我能想到的最好的办法就是使用一个额外的vars文件。

像这样的任务:

代码语言:javascript
复制
- include_vars: concat.yml

concat.yml中,你有自己的定义:

代码语言:javascript
复制
newvar: "{{ var1 }}-{{ var2 }}-{{ var3 }}"
票数 43
EN

Stack Overflow用户

发布于 2017-10-04 01:52:38

因为字符串是Python中的字符列表,所以我们可以像连接列表一样连接字符串(使用+号):

代码语言:javascript
复制
{{ var1 + '-' + var2 + '-' + var3 }}

如果您想通过管道将结果字符串传递给某个筛选器,请确保将位括在括号中:

例如,连接我们的3个var,并得到一个sha512散列:

代码语言:javascript
复制
{{ (var1 + var2 + var3) | hash('sha512') }}

注意:这适用于Ansible 2.3。我还没有在早期版本上测试过它。

票数 47
EN

Stack Overflow用户

发布于 2018-06-27 03:42:11

就像在python中连接列表一样简单。

代码语言:javascript
复制
ansible -m debug -a msg="{{ '-'.join(('list', 'joined', 'together')) }}" localhost

代码语言:javascript
复制
localhost | SUCCESS => {
  "msg": "list-joined-together" }

使用变量的工作方式相同:

代码语言:javascript
复制
ansible -m debug -a msg="{{ '-'.join((var1, var2, var3)) }}" localhost
票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31186874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档