มีวิธีตรวจสอบว่าคีย์พจนานุกรมไม่ได้ถูกกำหนดไว้ในงานที่ต้องทำหรือไม่?


18

ดังนั้นในรหัสของฉันฉันมีงาน

- name: cool task
  shell: 'touch iamnotcool.txt'
  when: me.cool is not defined

และ vars ของฉันดูเหมือน

---
me:
  stumped: yes

ดังนั้นเมื่อฉันรันงานมันกลับมาพร้อมกับข้อผิดพลาดต่อไปนี้

{"failed": true, "msg": "The conditional check 'me.cool' failed. The error was: error while evaluating conditional (me.cool): 'dict object' has no attribute 'cool'.

คำตอบ:


25

ไวยากรณ์ที่คุณรวม:

when: me.cool is not defined

ถูกต้อง.

คุณยังสามารถใช้not in:

when: "'cool' not in me"

ปัญหาคือข้อความแสดงข้อผิดพลาดของคุณ:

การตรวจสอบตามเงื่อนไข 'me.cool' ล้มเหลว

อ้างว่าสภาพของคุณถูกกำหนดเป็น:

when: me.cool

ดังนั้นอาจมีข้อผิดพลาดบางอย่างในเวอร์ชันที่คุณใช้ (แต่คุณไม่ได้แชร์อันใดอันหนึ่ง) และมีปัญหาที่ทราบแล้วหรือคุณไม่ได้โพสต์งานที่แน่นอนที่ทำให้เกิดข้อผิดพลาด


1
ข้อผิดพลาดอาจยังคงเกิดขึ้นถ้าเขาไม่ได้โพสต์รหัสเดิม ommited วินาทีเมื่อเงื่อนไขซึ่งหมายถึงค่าเดียวกัน ใช้งานได้: when: is_installed.rc is defined and is_installed.rc == 0สิ่งนี้ใช้ไม่ได้:when: is_installed.rc is defined \n when is_installed.rc == 0
Aiyion.Prime

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.