Score:0

Ansible เลือกองค์ประกอบที่เป็นช่องว่างจากรายการ

ธง cn
raw

ฉันต้องการตัวแปรที่มีองค์ประกอบว่างทั้งหมดอยู่ในไฟล์ _ชื่อ รายการ. ฉันลองสิ่งนี้:

ช่องว่าง: "{{ _names|select('search', '') | list }}"

แต่ดูเหมือนว่าจะได้ผล

นี่คือรายการ:

    "_ชื่อ":
    [
        "",
        "เอบีซี",
        "",
        ""
    ]

เพื่อให้บริบทบางอย่าง ฉันต้องใช้ตัวแปรนี้เพื่อนับองค์ประกอบที่ว่างเปล่าและเปรียบเทียบ

Score:0
ธง fr

วิธีที่ใช้งานง่ายคือการ เลือก องค์ประกอบเท่ากับสตริงว่าง อีกอันหนึ่งที่ใช้งานง่ายแต่กะทัดรัดกว่าก็คือการเขียนแบบง่ายๆ ปฏิเสธ องค์ประกอบ (ซึ่งตามค่าเริ่มต้นจะปฏิเสธค่าที่ไม่ว่างเปล่าทั้งหมด) Playbook ต่อไปนี้จะสาธิตวิธีแก้ปัญหาทั้งสองที่ให้ผลลัพธ์เหมือนกัน

หมายเหตุ: ปฏิเสธ วิธีการที่นี่จะใช้ได้ตราบเท่าที่องค์ประกอบอื่น ๆ ที่ไม่ว่างเปล่าในรายการไม่ประเมินเป็นเท็จ หากคุณเคยใช้ค่าบูลีนที่เป็นเท็จ ค่าเหล่านั้นจะถูกเก็บไว้เช่นกัน

- โฮสต์: localhost
  Gather_facts: เท็จ

  วาร์:
      _ชื่อ: ["","ABC","",""]
      blanks_select: "{{ _names | เลือก('==', '') | รายการ }}"
      blanks_reject: "{{ _names | ปฏิเสธ | รายการ }}"

  งาน:
    - แก้ปัญหา:
        var: "{{ รายการ }}"
      วนซ้ำ:
        - ช่องว่าง_เลือก
        - ช่องว่าง_ปฏิเสธ

ซึ่งจะช่วยให้:

เล่น [โฮสต์ในพื้นที่] *********************************************** ***********************

งาน [แก้ไขข้อบกพร่อง] *********************************************** ***********************
ตกลง: [localhost] => (item=blanks_select) => {
    "ansible_loop_var": "รายการ",
    "blanks_select": [
        "",
        "",
        ""
    ]
    "รายการ": "blanks_select"
}
ตกลง: [localhost] => (item=blanks_reject) => {
    "ansible_loop_var": "รายการ",
    "blanks_reject": [
        "",
        "",
        ""
    ]
    "รายการ": "blanks_reject"
}

เล่น RECAP ************************************************ *********************
localhost: ตกลง=1 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=0 ล้มเหลว=0 ข้าม=0 ช่วยชีวิต=0 ละเว้น=0
br flag
ตัวแปร *reject* จะทำงานหากไม่มีรายการที่ประเมินเป็น *False* คุณสามารถแปลงรายการเป็นสตริงก่อนได้หากต้องการ เช่น ``ช่องว่าง: "{{ _names|แผนที่('สตริง')|ปฏิเสธ|ความยาว }}"``
Zeitounator avatar
fr flag
@VladimirBotka ถูกต้อง ดังนั้นเหตุใดฉันจึงให้ทั้งสองวิธีในกรณีที่ตัวอย่างอินพุตปัจจุบันมีวิวัฒนาการ ฉันเพิ่มความแม่นยำนั้นในคำตอบ ขอบคุณ.

โพสต์คำตอบ

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