AWK错误:尝试在标量上下文中使用数组

时间:2012-09-10 15:54:25

标签: awk

我正在学习AWK。这是一个简单的代码片段,我试图将一个字符串拆分成一个数组并迭代它。

BEGIN {
  split("a,b,c", a, ",");

  for(i = 1; i <= length(a); i++) {
    print a[i];
  }
}

运行此代码时,出现以下错误:

  

awk:awk.txt:4:致命:尝试在标量上下文中使用数组“a”

但是,如果我将for语句更改为for (i in a),它就可以了。在进一步尝试通过谷歌搜索来理解这意味着什么时,我看到许多论坛(例如:[1])谈论awk bugs。如果这里的AWK大师可以帮助我理解错误信息的含义,那将是很棒的。

2 个答案:

答案 0 :(得分:6)

length需要一个字符串参数。你传给它一个数组。错误消息告诉您正在使用预期标量的数组。

答案 1 :(得分:3)

BEGIN {
  count = split("a,b,c", a, ",");

  for(i = 1; i <= count; i++) {
    print a[i];
  }
}

此外,length(ARRAY)适用于我的awk版本(GNU awk 4.0.1),但文档说明行为是非标准的。