我想要一个脚本,当我的电池电量等于或高于 90%、等于或低于 20%、等于或低于 10% 时通知我。我拼凑了以下内容,用 zenity 代替了通知发送,以便我收到一条通知,如果我在全屏模式下观看电影,该通知就会显示。我一直想不通的是如何表达一系列数字(11%-20%),只有“ge”和“le”。在我插入或拔出插头后停止通知也很好。这是我到目前为止所拥有的:
#!/bin/bash
#Battery level notification
while true
do
battery_level=$(acpi -b | grep -P -o '[0-9]+(?=%)')
if [ "$battery_level" -ge 90 ]; then
zenity --info --title="Battery is at or above 90%" --text="Unplug adapter now" --icon-name='battery' --height=50 --width=200
fi
sleep 180 # 180 seconds or 3 minutes
if [ "$battery_level" -le 20 ]; then
zenity --info --title="Battery is at or below 20%" --text="Plug in adapter now" --icon-name='battery' --height=50 --width=200
fi
sleep 120 # 120 seconds or 2 minutes
if [ "$battery_level" -1e 10 ]; then
zenity --warning --title="Battery is at or below 10%" --text="PLUG IN ADAPTER NOW!!!" --icon-name='battery' --height=50 --width=200
fi
sleep 60 # 60 seconds or 1 minute
done
从上面应该可以清楚地看出,我真的不知道自己在做什么! (我什至不确定这是用什么语言编写的)使用 Linux Mint 19.2 Cinnamon。
答案1
这应该适合你:
#!/bin/bash
#Battery level notification
while true
do
battery_level="$1"
if [ "$battery_level" -ge 90 ]; then
#Battary level is 90 or higher
zenity --info --title="Battery is at or above 90%" --text="Unplug adapter now" --icon-name='battery' --height=50 --width=200
elif [ "$battery_level" -le 20 ] && [ "$battery_level" -ge 11 ]; then
#Battary level is between 11 and 20
zenity --info --title="Battery is at or below 20%" --text="Plug in adapter now" --icon-name='battery' --height=50 --width=200
elif [ "$battery_level" -le 10 ]; then
#Battary level is less or equal 10
zenity --warning --title="Battery is at or below 10%" --text="PLUG IN ADAPTER NOW!!!" --icon-name='battery' --height=50 --width=200
fi
sleep 60 # 60 seconds or 1 minute
done
您可以使用字符检查多个条件&&
。并elif
代表 else if。如果第一个条件不起作用,他将检查第二个条件,如果这也不起作用,他将检查第三个条件,依此类推。