我将目录/子目录列表传递到剧本中,如下所示:
dirs=['Web\this','Web\that','Web']
当我实际在这些目录上执行任务(win_shell,调用构建过程)时,这种方法很有效,但稍后我需要复制文件,而“\”在用作文件名的一部分时不起作用。我有兴趣使用以下内容,因此我将获取大多数构建的模块名称和根文件夹中的“Web”:
dirs[1].split('\\')[-1]
我希望这将分别返回“this”、“that”和“Web”。
但是我找不到任何斜线或正则表达式组合来分割字符串。我在 StackExchange 中找到了大约 5 个接近的问题/答案,但似乎都没有做到这一点。
我也尝试过不同的方法
"{{ dirs[1] | regex_replace('\\','-') }}"
答案1
使用分隔符声明变量以避免引用和转义的麻烦。使用单引号样式; 反斜杠'\'
可以自由使用。例如,下面的任务
- debug:
msg: "{{ dirs[1].split(separator)[-1] }}"
vars:
separator: '\'
dirs: ['Web\this','Web\that','Web']
给出
msg: that