如何删除数组并将同名变量复用为标量变量?
解决GNU Awk中数组转标量的问题
在GNU Awk里,变量一旦被标记为数组类型,delete命令只会清空数组内的所有元素,并不会移除它的数组类型标识,因此后续将其当作标量赋值时就会触发错误。
要实现把数组变量复用为标量的需求,可以使用GNU Awk特有的unset命令——它能彻底删除变量的类型标识,之后就可以重新将其赋值为标量:
BEGIN {tmp[1]; delete tmp; unset tmp; tmp = ""}
执行这段代码就不会再报错了。需要注意的是,unset是GNU Awk的扩展特性,不属于POSIX标准awk的内容;如果需要兼容其他awk环境,最稳妥的方式还是直接使用不同的变量名分别存储数组和标量值。
内容的提问来源于stack exchange,提问作者Renaud Pacalet
相关产品推荐
相关产品推荐

