如何删除用户定义函数中的数组?

时间:2017-10-24 11:50:51

标签: arrays awk gawk

在awk中,可以使用以下命令删除先前定义的数组:

delete array;

或:

for (i in array)
{
    delete array[i];
}

是否可以定义一个用户函数将数组作为输入然后删除它?例如:

function delarr(arrname)
{
    delete arrname;
}

BEGIN {
    array[1] = "1";
    array[2] = "2";

    print array[1];

    delarr(array);
}

1 个答案:

答案 0 :(得分:3)

你的例子正常。

来自gawk manual

  

在awk中,当你声明一个函数时,没有办法明确声明参数是通过值还是通过引用传递的。

     

相反,根据以下规则,在调用函数时在运行时确定传递约定:如果参数是数组变量,则通过引用传递。否则,参数将按值传递。

POSIX推荐相同的行为:

  

如果是标量,则函数参数应按值传递,如果是数组名,则按值引用。