我有这个:
vals <- unique(c(as.character(df1$V1), as.character(df2$V1)))
data.frame(vals, df1=is.na(match(vals, df1$V1)), df2=is.na(match(vals, df2$V1)))
# vals df1 df2
# 1 A0A061ACH4;Q95Q10;Q9U1W6 FALSE FALSE
# 2 A0A061ACL3;Q965I6;O76618 FALSE FALSE
# 3 A0A061ACR1;Q2XN02;F5GUA3;Q22498 FALSE FALSE
# 4 H2FLH3;H2FLH2;A0A061ACT3;A0A061AE24;Q23551-2;Q23551;Q23551-4;Q23551-3;Q23551-5 FALSE FALSE
# 5 A0A061AL01 FALSE FALSE
# 6 C1P641 FALSE TRUE
# 7 A0A061AJJ3;A0A061AEA8 FALSE FALSE
# 8 Q86CZ7 FALSE FALSE
# 9 Q22501;A0A061AE05 FALSE FALSE
# 10 Q27GQ4 TRUE FALSE
我得到了什么
www.mydomain/Accounts
www.mydomain/app1
www.mydomain/app2
www.mydomain/asp.netcoreApp1
如果when条件为假,我需要跳过整个任务。
答案 0 :(得分:4)
使用when
时,无法将with_items
条件附加到整个任务。
但是你可以采用另一种方式 - 如果没有密钥则默认迭代器为空列表,如下所示:
- name: Add hosts to /etc/hosts
lineinfile:
dest=/etc/hosts
line='{{ item.dest }} {{ item.src }}'
regexp='.*{{ item.src }}.*'
state=present
with_items: "{{ hosts[service_name] | default([]) }}"
在这种情况下,如果您提供未知的服务名称,任务将有零项迭代
另请注意,我在with_items
构造中删除了不必要的列表定义。