Ansible 在反斜杠上分割字符串

Wol*_*ske 5 python regex ansible ansible-playbook

我将目录/子目录列表传递到剧本中,如下所示:

dirs=['Web\this','Web\that','Web']
Run Code Online (Sandbox Code Playgroud)

当我实际在这些目录上执行任务时(win_shell,调用构建过程),这工作得很好,但后来我需要复制文件,并且“\”在用作文件名的一部分时不起作用。我有兴趣使用以下内容,因此我将获取大多数构建的模块名称以及根文件夹中的“Web”:

dirs[1].split('\\')[-1]
Run Code Online (Sandbox Code Playgroud)

我希望这会分别返回“this”、“that”和“Web”。

但我找不到任何斜杠或正则表达式魔法的组合来分割我的字符串。我在 StackExchange 中发现了大约 5 个接近的问题/答案,但似乎没有一个能做到这一点。

我也尝试过这个与变化

"{{ dirs[1] | regex_replace('\\','-') }}"
Run Code Online (Sandbox Code Playgroud)

Vla*_*tka 6

使用分隔符声明变量以避免引用和转义炼金术。使用单引号样式;反斜杠'\'可以自由使用。例如下面的任务

  - debug:
      msg: "{{ dirs[1].split(separator)[-1] }}"
    vars:
      separator: '\'
      dirs: ['Web\this','Web\that','Web']
Run Code Online (Sandbox Code Playgroud)

给出

  msg: that
Run Code Online (Sandbox Code Playgroud)

  • 杰出的!奇迹般有效。肯定是“炼金术”…… (2认同)