Welche Bedeutung hat „-1“ in Ansible-Gleichheitsvergleichen?

Welche Bedeutung hat „-1“ in Ansible-Gleichheitsvergleichen?

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 whenbedingten 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.findMethode 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.

verwandte Informationen