我想有一个脚本通知我,当我的电池在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从上面应该是相当清楚的,我不知道我在做什么!(我甚至不确定这是用什么语言写的)使用LinuxMint19.2肉桂。
发布于 2020-05-19 08:52:58
这应该适用于你:
#!/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代表的是“其他”。如果第一个条件不起作用,他将检查第二个条件,如果这个条件不起作用,他将检查第三个条件,以此类推。
https://unix.stackexchange.com/questions/587606
复制相似问题