Versuchen Sie zu prüfen, ob es sich um eine leere Zeichenfolge handelt oder nicht?
- hosts: myhosts
tasks:
- name: echo hello
command: echo hello
register: result
- command: somecommand {{ result.stdout }}
when: result.stdout != ""
- command: someothercommand
when: result.stdout == ""
Ab 2018 ist die empfohlene Methode zum Testen, ob die Ausgabe leer ist, einfach:
when: result.stdout | length > 0
Das ist die pythonische Art, Wahrheit, Null, leere Zeichenketten und leere Listen als falsch zu bewerten.
Andere ältere Alternativen nicht empfohlen oder gar nicht funktioniert:
result.stdout != ""
würde die Ansible-Lint-Prüfung nicht bestehen!result.stdout | bool
wird NICHT funktionieren, da die meisten Zeichenfolgen als False ausgewertet werden, nur in Fällen, in denen es true zurückgeben würde, wenn stdout zufällig einer dertrue
ist ,yes
,... eine Art Streicher.result.stdout
Hat früher funktioniert, löst jetzt aber aus:
[WARNUNG ÜBER VERLETZUNG]:Bei der Auswertung als bloße Variable verschwindet dieses Verhalten, und Sie müssen in Zukunft möglicherweise |bool zum Ausdruck hinzufügen. Siehe auch CONDITIONAL_BARE_VARS configurationtoggle.. Diese Funktion wird in Version 2.12 entfernt. Deprecationwarnings können durch Setzen von deprecation_warnings=False inansible.cfg.`
deaktiviert werden