Score:3

ตัวแปร Ansible ที่ไม่มีเครื่องหมายอัญประกาศ

ธง cn
raw

หากต้องการใช้ตัวแปรที่รวบรวมจาก json ฉันต้องการให้เป็นข้อมูลดิบโดยไม่มีเครื่องหมายอัญประกาศ:

ฉันมี

ตกลง: [อุปกรณ์] => {
    "ข้อเท็จจริง": {
        "int": "7"
    },
}

ฉันต้องการ

ตกลง: [อุปกรณ์] => {
    "ข้อเท็จจริง": {
        "int": 7
    },
}

สิ่งที่สำคัญคือเครื่องหมายคำพูดไม่ได้เป็นส่วนหนึ่งของตัวแปรดังนั้นฉันจึงใช้ไม่ได้ | นานาชาติ หรือ | แทนที่ เพื่อลบเครื่องหมายคำพูด

มีวิธี ?

Score:6
ธง br

ผลลัพธ์ของก จินจา นิพจน์เป็นสตริงเสมอ คุณไม่สามารถรับจำนวนเต็มได้ สิ่งที่คุณต้องการจริงๆ คือมูลค่าของแอตทริบิวต์ นานาชาติ ในพจนานุกรม ข้อเท็จจริง เป็นจำนวนเต็ม ทดสอบค่าปัจจุบัน เช่น

        - แก้ปัญหา:
            var: fact.int
        - แก้ปัญหา:
            var: fact.int|type_debug

ถ้าค่าแอตทริบิวต์ นานาชาติ เป็นสตริงที่คุณจะได้รับ (ย่อ)

  fact.int: '7'
  fact.int|type_debug: AnsibleUnicode

คุณสามารถแปลงสตริงเป็นจำนวนเต็มได้ เช่น

        - set_fact:
            ข้อเท็จจริง: "{{ ข้อเท็จจริง|รวมกัน({'int': _int|int}) }}"
          วาร์:
            _int: "{{ fact.int }}"
        - แก้ปัญหา:
            var: fact.int
        - แก้ปัญหา:
            var: fact.int|type_debug

คุณจะได้รับ (ย่อ)

  fact.int: '7'
  fact.int|type_debug: int

ตอนนี้ค่าของแอตทริบิวต์ นานาชาติ เป็นจำนวนเต็ม แต่ผลลัพธ์ของการแสดงออกของ Jinja var: fact.int ยังคงเป็นสตริง fact.int: '7'.


หมายเหตุ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา