Điểm:0

Ansible chọn các phần tử trống từ danh sách

lá cờ cn
raw

Tôi cần một biến có tất cả các phần tử trống có trong _tên danh sách. Tôi đã thử điều này:

khoảng trống: "{{ _names|select('search', '') | list }}"

Nhưng nó dường như không hoạt động

đây là danh sách:

    "_tên":
    [
        "",
        "ABC",
        "",
        ""
    ]

Để đưa ra một số ngữ cảnh, tôi cần biến này để đếm các phần tử trống và so sánh nó.

Điểm:0
lá cờ fr

Cách trực quan dễ dàng là lựa chọn các phần tử bằng một chuỗi rỗng. Một cách khác hơi phản trực giác nhưng viết gọn hơn là chỉ cần viết Từ chối phần tử (theo mặc định sẽ từ chối tất cả các giá trị không trống). Playbook sau đây minh họa cả hai giải pháp cho cùng một kết quả.

Lưu ý: các Từ chối phương pháp ở đây sẽ chỉ hoạt động miễn là các phần tử không trống khác trong danh sách không được đánh giá là sai. Nếu bạn từng sai giá trị boolean, chúng cũng sẽ được giữ lại

- máy chủ: localhost
  thu thập_facts: sai

  lọ:
      _names: ["","ABC","",""]
      blanks_select: "{{ _names | select('==', '') | danh sách }}"
      blanks_reject: "{{ _names | từ chối | danh sách }}"

  nhiệm vụ:
    - gỡ lỗi:
        var: "{{ mục }}"
      vòng:
        - khoảng trống_chọn
        - khoảng trống_từ chối

nào mang lại:

CHƠI [máy chủ cục bộ] ************************************************ ************************

NHIỆM VỤ [gỡ lỗi] ************************************************ ************************
được rồi: [localhost] => (item=blanks_select) => {
    "ansible_loop_var": "mục",
    "blanks_select": [
        "",
        "",
        ""
    ],
    "item": "blanks_select"
}
được rồi: [localhost] => (item=blanks_reject) => {
    "ansible_loop_var": "mục",
    "blanks_reject": [
        "",
        "",
        ""
    ],
    "item": "blanks_reject"
}

TÓM TẮT CHƠI *************************************************** ************************
localhost : ok=1 thay đổi=0 không truy cập được=0 thất bại=0 bỏ qua=0 giải cứu=0 bỏ qua=0
lá cờ br
Biến thể *từ chối* hoạt động nếu không có mục nào trong danh sách đánh giá là *Sai*. Trước tiên, bạn có thể chuyển đổi các mục thành chuỗi nếu muốn, ví dụ: `` chỗ trống: "{{ _names|map('string')|reject|length }}"``.
Zeitounator avatar
lá cờ fr
@VladimirBotka hoàn toàn chính xác, do đó tại sao tôi đưa ra hai cách tiếp cận trong trường hợp ví dụ đầu vào hiện tại phát triển. Tôi đã thêm độ chính xác đó vào câu trả lời. Cảm ơn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.