私はバースクリプトを書いており、Wi-Fiのssidとステータスがしばらく変わらないことを知っていても、20/30秒ごとに確認したくありません。subscribe report
変更が発生したときにのみ更新するbspcコマンドなどを使用したいと思います。
私の状況は次のとおりです。
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
おそらく、スクリプトが実際にやりたいことを正しく説明していないでしょう。したがって、より良いバージョンは次のとおりです。
毎回同じssidを表示するために20/30秒ごとにバーを更新したくなく、スクリプトの出力が異なるときに更新したいと思います。
私は偶然完全に解決策を見つけました。
# 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) &