
Ansibleのドキュメントを見ていますここ出力を変数として登録する例を見ると、次のようになります。
- name: test play
hosts: all
tasks:
- shell: cat /etc/motd
register: motd_contents
- shell: echo "motd contains the word hi"
when: motd_contents.stdout.find('hi') != -1
条件文の等価性チェックはwhen
-1 に対して行われますが、これはブール値であると想定して、0 または 1 のいずれかを返します。ドキュメントには、負のケースが 0 ではなく -1 である理由を示すものは何も見つかりません。これは非標準の動作であるため、心配です。このような比較で期待できる他の種類の戻り値と、いずれにしても成功とは何なのかを知りたいです。0 ですか? 1 ですか?
答え1
これは、要求された部分文字列が見つからない場合にPythonstring.find
メソッドが返されるためです。-1
それ以外の場合は、文字列が見つかったインデックスを返します。
参照するにはPython ドキュメント:
string.find(s, sub[, start[, end]])
s 内で部分文字列 sub が見つかった最小のインデックスを返します。sub は s[start:end] に完全に含まれることになります。失敗した場合は -1 を返します。