У меня есть следующая строка в bash-скрипте Nagios. Он используется для получения коэффициентов ошибок вверх и вниз для указанных сетевых карт:
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]
не нужны, но я могу ошибаться! Меняет ли что-либо присвоение [2] $ 0, когда мы ссылаемся на $ 3 и $ 11? Я пробовал сценарий без первых двух утверждений, и вывод такой же, но, возможно, я пропустил угловой случай ...
Заранее спасибо
Rich