根据WiFi状态获取WiFi的ssid

根据WiFi状态获取WiFi的ssid

我正在编写一个酒吧脚本,当我知道它暂时不会改变时,我不想每 20/30 秒检查一次 WiFi 的 ssid 和它的状态。我想使用类似 bspc 命令的命令,subscribe report该命令仅在发生更改时更新。

这是我的上下文:

while :
do
    case "con=$(cat /sys/class/net/w*/operstate 2>/dev/null)" in
        [Dd]*) ssid='No Connection' ;;
        [Uu]*) ssid=$(iwgetid -r) ;;
    esac

    echo "$ssid"
    sleep 30
done

答案1

我可能在解释我希望脚本实际执行的操作方面做得很糟糕,所以这里有一个更好的版本:

我不想每 20/30 秒刷新一次栏只是为了每次显示相同的 ssid,我只想在脚本有不同的输出时刷新它。

我确实完全偶然地找到了解决方案:

# This function checks if the line is actually different or not,
# it's stolen from herbstluftwm example script
uniq_linebuffered() {
  awk -W interactive '$0 != l { print ; l=$0 ; fflush(); }' "$@"
}

while :
do
    case "con=$(cat /sys/class/net/w*/operstate 2>/dev/null)" in
        [Dd]*) ssid='No Connection' ;;
        [Uu]*) ssid=$(iwgetid -r) ;;
    esac

    echo "$ssid"
    sleep 10 || break
done > >(uniq_linebuffered) &

相关内容