web-dev-qa-db-ja.com

バックスラッシュ上のAnsible分割文字列

次のように、dir/subdirのリストをプレイブックに渡します。

dirs=['Web\this','Web\that','Web']

これらのディレクトリで実際にタスク(win_Shell、ビルドプロセスを呼び出す)を実行すると、これは正常に機能しますが、後でファイルをコピーする必要があり、ファイル名の一部として使用すると '\'が機能しません。次の使用に興味があるので、ほとんどのビルドのモジュール名と、ルートフォルダーにあるビルドの「Web」を取得します。

dirs[1].split('\\')[-1]

これがそれぞれ「this」、「that」、「Web」を返すことを期待していました。

しかし、文字列を分割するためのスラッシュまたは正規表現の魔法の組み合わせを見つけることができません。 StackExchangeで5つの質問/回答が近いことがわかりましたが、どれもそうではありません。

私はこれのバリエーションも試しました

"{{ dirs[1] | regex_replace('\\','-') }}"
2
Wolske

クォーテーションとエスケープの錬金術を回避し、セパレーターで変数を宣言することが可能です。 一重引用符で囲まれたスタイル ;を使用します。バックスラッシュ「\」は自由に使用できます。例えば以下の遊び

  vars:
    separator: '\'
    dirs: ['Web\this','Web\that','Web']
  tasks:
    - debug:
        msg: "{{ dirs[1].split(separator)[-1] }}"

与える

"msg": "that"
2
Vladimir Botka