你怎样才能正确逃避反斜杠在剧透剧本?
我想做一个search,并replace密码中的反斜杠,但我甚至无法在regex_replace jinja2filter中添加反斜杠作为string。 我正在使用完全版本2.1.1.0。
这是一个问题的例子:
$ cat jinja2-escape-test.yml --- - hosts: localhost gather_facts: no vars: password: '\Udl5DoQfa3Uy_:1sbcE' tasks: - debug: var=password - name: Escape root password - working set_fact: "password_escaped={{ password | regex_replace ('U','\\X') }}" - name: Escape root password - not working set_fact: "password_escaped={{ password | regex_replace ('U','\\') }}" - debug: msg=password_escaped={{ password_escaped }} # vim:et:sw=2:ts=2:sts=2: $ ansible-playbook jinja2-escape-test.yml ERROR! failed at splitting arguments, either an unbalanced jinja2 block or quotes: password_escaped={{ password | regex_replace ('U','\') }} The error appears to have been in '/home/mot/build-dashboards/jinja2-escape-test.yml': line 15, column 5, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: - name: Escape root password - not working ^ here
您在这里混合了语法样式,并且引用设置错误:
- name: Escape root password - working set_fact: "password_escaped={{ password | regex_replace ('U','\\X') }}"
应该是:
- name: Escape root password - working set_fact: password_escaped: "{{ password | regex_replace ('U','\\X') }}"
要么:
- name: Escape root password - working set_fact: password_escaped="{{ password | regex_replace ('U','\\X') }}"
你可能想检查引用是否比regex_replace更适合你的需求。 像这样使用它:
- name: Escape root password - working set_fact: password_escaped: "{{ password | quote }}"