我正在使用GNU Awk 3.1.7进行Linux Red Hat 6.6配置
在awk语句中,我想拆分一个shell字符串变量,并将所有字符串元素分配为键,而不是值,所以我在awk语句的BEGIN部分中使用了以下语句:
BEGIN {
split("${myShellVariable}",tmp, " ");
for (i in tmp) myAwkVar[tmp[i]] = tmp[i];
}
然后在我的awk语句的主体部分中,我想测试一个字段是否定义为代码为myAwkVar
的{{1}}数组变量元素,并且我注意到if ($2 in myAwkVar) ...
语句没有不工作
如果在定义了in
数组变量之后,以前我没有在BEGIN
部分中打印所有数组值:
myAwkVar
如果我将print语句与for循环语句相关联,它将无法正常工作!
BEGIN {
split("${myShellVariable}",tmp, " ");
for (i in tmp) myAwkVar[tmp[i]] = tmp[i];
print myAwkVar["val1"];
print myAwkVar["val2"];
print myAwkVar["val3"];
...}
为什么在使用数组变量之前需要打印它的所有元素?