我编写了一个简短的脚本,用于在电池电量低于 25% 和高于 75% 时通知自己。我使用通知发送来发送通知并播放警报声音以通知用户事件。我面临的问题是我想发送持续通知,并不断播放警报声音。例如,如果电池电量超过 75% 并且交流电仍插着,则通知必须持续,警报声音会不断播放,直到用户拔掉交流电。同样,如果电池电量低于 25%,脚本也会执行相同的操作。
我遇到的问题是,使用通知发送时,通知会堆积在之前的通知上,我不知道如何显示持续通知并在后台播放持续的警报声音。
下面附上了图像和代码以便更好地理解我的问题。
#!/bin/bash
while true
do
export DISPLAY=:0.0
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
ac_adapter=$(acpi -a | cut -d' ' -f3 | cut -d- -f1)
if [ "$ac_adapter" = "on" ]; then
if [ $battery_level -ge 75 ]; then #check if the battery level is over 75%
while :
do
notify-send -u critical "Please unplug your AC adapter" "Battery level: ${battery_level}% (charged above 75%)" -i battery-full-charged; play /home/ali/Music/alarm.wav
sleep 1
ac_adapter=$(acpi -a | cut -d' ' -f3 | cut -d- -f1)
if [ "$ac_adapter" = "off" ]; then
break #Abandon the loop.
fi
done
fi
else
if [ $battery_level -lt 25 ]; then #check if the battery level is less than 25%
while :
do
notify-send -u critical "Please plug your AC adapter" "Battery level: ${battery_level}% (charge below 25%)" -i battery-caution; play /home/ali/Music/alarm.wav
sleep 1
ac_adapter=$(acpi -a | cut -d' ' -f3 | cut -d- -f1)
if [ "$ac_adapter" = "on" ]; then
break #Abandon the loop.
fi
done
fi
fi
sleep 1 #wait for 1 seconds before checking again
done