我在 Nagios bash 脚本中有以下行。它用于获取指定网卡的上下错误率:
if=`awk -v interface="$INTERFACE" '$1 ~ "^" interface ":" { split($0, a, /: */); $0 = a[2]; print $3 " " $11 }' /proc/net/dev`
今天之前我从未使用过 awk,所以我正在寻找自己的方式。
正如我所看到的,我们将值 $INTERFACE 作为接口传递给 awk 脚本,然后过滤开始的行interface:
(例如 eth0:)。然后,我们使用冒号空间作为分隔符来分割行。然后,由于某种原因,在实际提取我们想要的值之前,我们将数组中的第三个条目分配给 $0。
在我看来,这些陈述是不必要的split($0, a, /: */)
,$0 = a[2]
但我可能是错的!当我们随后引用 $3 和 $11 时,将 a[2] 分配给 $0 会改变什么吗?我试过没有前两个语句的脚本,输出是一样的,但也许我错过了一个极端情况......
提前致谢
富有的