
Ich schaue mir die Ansible-Dokumentation anHierund siehe das Beispiel zum Registrieren der Ausgabe als Variable, das Folgendes zeigt:
- 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
Die Gleichheitsprüfung in der when
bedingten Anweisung erfolgt auf -1, aber ich hätte angenommen, dass es sich um einen Booleschen Wert handelt und daher entweder 0 oder 1 zurückgegeben. Ich kann in der Dokumentation nichts finden, das darauf hinweist, warum der negative Fall -1 statt 0 ist. Das macht mir Sorgen, weil es sich um ein nicht standardmäßiges Verhalten handelt, und ich würde gerne wissen, welche anderen Arten von Rückgabewerten ich bei solchen Vergleichen erwarten kann, und überhaupt, was ein Erfolg ist? Eine 0? Eine 1?
Antwort1
Dies liegt daran, dass die Python- string.find
Methode zurückkehrt -1
, wenn sie die angeforderte Teilzeichenfolge nicht finden kann.
Andernfalls wird der Index zurückgegeben, an dem die Zeichenfolge gefunden wurde.
Weitere Informationen finden Sie imPython-Dokumentation:
string.find(s, sub[, start[, end]])
Gibt den niedrigsten Index in s zurück, an dem die Teilzeichenfolge sub gefunden wird, sodass sub vollständig in s[start:end] enthalten ist. Gibt bei einem Fehler -1 zurück.