質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Q&A

解決済

1回答

4414閲覧

ファイルパスを綺麗に組み立てたい

ryunix

総合スコア1656

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

0グッド

0クリップ

投稿2015/07/26 18:27

いつもお世話になっております。

変数を使用して、ファイルパスを組み立てる処理を書いています。
src_dirを省略可能な変数として使用したいのですが、
今の書き方だと省略時にスラッシュが重なってしまいます。

その後の動作に影響がないことは分かっているのですが、
あんまり気持ちが良いものではありません :(

何か良い方法はないでしょうか?
joinが使えるかもしれないと思い、試したコードも載せておきます。

よろしくお願いします。

--- - hosts: all gather_facts: no tasks: - debug: msg={{ dotfiles_dest }}/{{ item.src_dir | default() }}/{{ item.src }} with_items: dotfiles_dotfiles - debug: msg={{ [ dotfiles_dest, item.src_dir | default(), item.src ] | join("/") }} with_items: dotfiles_dotfiles vars: dotfiles_dest: ~/.dotfiles dotfiles_dotfiles: - { src: foo } - { src_dir: bar, src: foo }
TASK: [debug msg={{ dotfiles_dest }}/{{ item.src_dir | default() }}/{{ item.src }}] *** ok: [127.0.0.1] => (item={'src': 'foo'}) => { "item": { "src": "foo" }, "msg": "~/.dotfiles//foo" } ok: [127.0.0.1] => (item={'src_dir': 'bar', 'src': 'foo'}) => { "item": { "src": "foo", "src_dir": "bar" }, "msg": "~/.dotfiles/bar/foo" } TASK: [debug msg={{ [ dotfiles_dest, item.src_dir | default(), item.src ] | join("/") }}] *** ok: [127.0.0.1] => (item={'src': 'foo'}) => { "item": { "src": "foo" }, "msg": "~/.dotfiles//foo" } ok: [127.0.0.1] => (item={'src_dir': 'bar', 'src': 'foo'}) => { "item": { "src": "foo", "src_dir": "bar" }, "msg": "~/.dotfiles/bar/foo" }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

replace/// に置換したり、reject で空を除去してみたりでどうでしょうか?

--- - hosts: localhost gather_facts: no tasks: - debug: msg={{ [ dotfiles_dest, item.src_dir | default(), item.src ] | join("/") | replace('//', '/') }} with_items: dotfiles_dotfiles - debug: msg={{ [ dotfiles_dest, item.src_dir | default(none), item.src ] | reject('none') | join("/") }} with_items: dotfiles_dotfiles vars: dotfiles_dest: ~/.dotfiles dotfiles_dotfiles: - { src: foo } - { src_dir: bar, src: foo }

投稿2015/07/27 02:49

ngyuki

総合スコア4514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryunix

2015/07/27 12:37

回答ありがとうございました! replaceは可読性も落ちず良いですね、replaceでやってみます :D rejectは知りませんでした、Jinja2のドキュメントは見ていなかったので今後はこちらも見てみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問