awk 的奇怪行为

awk 的奇怪行为

为什么我运行时只得到“cat”

awk 'BEGIN {
  animal[three] = "hen"
  animal[two]   = "dog"
  animal[one]   = "cat"
  for (var in animal) {
    print animal[var]
  }
}

??

它不应该打印“母鸡”,“狗”和“猫”吗?

答案1

awk 数组的索引可以是数字(如传统数组)或字符串(关联数组)。因此,您可以执行

animal[1] = "cat"

或者

animal["one"] = cat

然而,如果你这样做

animal[one] = cat

awk 将尝试查找一个名为“one”的变量,失败,并有效地执行以下操作:

animal[""] = cat

因此,在您的程序中,所有三种动物都被分配给animal[""],所以您的数组中最终只有一个元素。

如果您将one,twothree放在引号中,您的代码将按预期工作。

相关内容