#!/bin/bash
#$1:表示变量传参
nic=$1
#-e表示对于转义字符按相应的方式处理,如果不加-e那么对于转义字符会按普通字符处理。
echo -e " In ------ Out"
#死循环
while true; do
#$0~:表示某一行;$nic:表示匹配包含这个值的行;$2:第二列
#解释:打印包含$nic值的这一行的第二列
old_in=$(awk '$0~"'$nic'"{print $2}' /proc/net/dev)
#解释:打印包含$nic值的这一行的第十列
old_out=$(awk '$0~"'$nic'"{print $10}' /proc/net/dev)
#休眠一秒
sleep 1
new_in=$(awk '$0~"'$nic'"{print $2}' /proc/net/dev)
new_out=$(awk '$0~"'$nic'"{print $10}' /proc/net/dev)
#%.1f:表示保留一位小数;%s:表示占位符,将后面的这个值传入到前面这个占位;默认单位是比特,转换成KB;
#解释:打印新的值减去旧的值的差的这个值,(也就是新值和旧值之间休眠的这一秒的值,也就是实时查看的值)
in=$(printf "%.1f%s" "$((($new_in-$old_in)/1024))" "KB/s")
out=$(printf "%.1f%s" "$((($new_out-$new_out)/1024))" "KB/s")
echo "$in $out"
sleep 1
done