如何为Ansible / Jinja2三元运算符转义单引号?

时间:2018-06-27 13:36:54

标签: ansible jinja2

下面是我的代码段。基本上,对于包含的任务,我想提供一个变量,其内容类似于以下字符串:

--date='something'

;如果原始变量为空字符串,则应为空。关键是,我需要字符串采用上面的形式,包括值周围的单引号。

如果我不需要单引号,则一切正常!但是,由于需要它们,因此我尝试使用以下片段对其进行转义。不幸的是,我所拥有的似乎似乎行不通,因为\'并不符合预期。我该如何正确地对'进行转义,以使它们进入我的字符串?

  tasks:
    - include_tasks: ../tasks/get_current.yml
    - include_tasks: ../tasks/failed_jobs_stats.yml
      vars:
        date_param: "{{ date_start != '' | ternary('--date=\''+date_start+'\'', '') }}"

1 个答案:

答案 0 :(得分:0)

这不是报价问题,这是运算符优先级问题。

在您的示例中,您:

  1. 将三元过滤器应用于空字符串''
  2. 将以上结果与date_start

您需要做的是将条件括在括号中

date_param: "{{ (date_start != '') | ternary('--date=\''+date_start+'\'', '') }}"