Я передаю список каталогов / подкаталогов в playbook следующим образом:
dirs=['Web\this','Web\that','Web']
Это отлично работает, когда я действительно выполняю задачи в этих каталогах (win_shell, вызывая процесс сборки), но позже мне нужно скопировать файлы, и '\' не работает, когда используется как часть имени файла. Мне интересно использовать следующее, поэтому я получу имя модуля для большинства сборок и «Web» для того, что находится в корневой папке:
dirs[1].split('\\')[-1]
Я надеялся, что это вернет «это», «то» и «Интернет» соответственно.
Но я не могу найти никакой комбинации косой черты или магии регулярного выражения, чтобы разделить мои строки. Я нашел около 5 вопросов / ответов в StackExchange, которые близки, но ни один из них, похоже, этого не делает.
Я также пробовал это с вариациями
"{{ dirs[1] | regex_replace('\\','-') }}"
Можно избежать алхимии цитат и экранирования и объявить переменную с разделителем. Использовать Стиль с одинарными кавычками; обратная косая черта "\" может использоваться свободно. Например, пьеса ниже
vars:
separator: '\'
dirs: ['Web\this','Web\that','Web']
tasks:
- debug:
msg: "{{ dirs[1].split(separator)[-1] }}"
дает
"msg": "that"