如何在电池通知脚本中表达一系列数字 (11%-20%)

如何在电池通知脚本中表达一系列数字 (11%-20%)

我想要一个脚本,当我的电池电量等于或高于 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。如果第一个条件不起作用,他将检查第二个条件,如果这也不起作用,他将检查第三个条件,依此类推。

相关内容