首页 > 解决方案 > 为什么访问 awk 数组的不存在元素会创建此元素?

问题描述

我刚刚花了很多时间在一段 awk 代码上,我不明白它的行为:如果一个数组不包含一个元素,为什么试图访问这个元素会创建它(带有一个空值)?

echo "1" | awk '{a[$1]=12} END{for (i in a) {print i,a[i]}; print a[2]; for (i in a) {print i,a[i]};}'

返回

1 12

1 12  
2 

元素“2”已在 a[] 中创建,值为“”。这是否意味着您必须在访问之前测试是否存在任何元素,否则会冒更改数组大小的风险。这似乎是一种相当危险的行为。(我正在使用 gawk。)

感谢您的任何见解。

标签: awk

解决方案


推荐阅读