我有一个简单的代码片段,由两个数组和一个if比较
组成// {
# Create an array
animals["goat"] = "4 legs"
animals["chicken"] = "2 legs"
animals["elefant"] = "4 legs"
for (animal in animals) {
print "Animal: " animal " has: " animals[animal]
}
zoo["lion"] = "4 legs"
zoo["leguana"] = "4 legs"
for (animal in zoo) {
if (animals[animal] != "2 legs") {
# do something
}
}
for (animal in animals) {
print "Again. Animal: " animal " has: " animals[animal]
}
}
输入文件无关紧要。
所以问题在于if循环中的if语句。我希望它只是比较数组中的不同值" animals"不等于" 2条腿"但是发生的事情是:
Animal: chicken has: 2 legs
Animal: goat has: 4 legs
Animal: elefant has: 4 legs
Again. Animal: chicken has: 2 legs
Again. Animal: goat has: 4 legs
Again. Animal: elefant has: 4 legs
Again. Animal: lion has:
Again. Animal: leguana has:
注意突然阵列"动物"有两个新的钥匙,狮子和leguana,但没有价值。为什么会这样? =!不应该分配一个值,它应该只看一个键是否有值,一个键可能不存在于数组中。 有没有办法检查数组中可能不存在的键是否具有某个值,而不是在数组中创建键?
答案 0 :(得分:1)
你必须保护,指导,动物[动物]与动物动物
for (animal in zoo) {
if (animal in animals && animals[animal] != "2 legs") {
print "Then Animal:" animal
}
else {
print "Else Animal:" animal
}
}
答案 1 :(得分:0)
最终我找到了答案: https://www.gnu.org/software/gawk/manual/html_node/Reference-to-Elements.html
要确定元素是否存在于某个索引处的数组中,请使用以下表达式:
数组中的indx