首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在电池通知脚本中表示一系列数字(11%-20%)

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

Unix & Linux用户
提问于 2020-05-19 07:39:11
回答 1查看 64关注 0票数 1

我想有一个脚本通知我,当我的电池在90%或以上,在或低于20%,或低于10%。我拼凑了以下内容,用zenity代替通知发送,这样我就会收到一个通知,如果我在全屏模式下看电影,它就会显示出来。我还没弄明白的是如何表达一系列数字(11%-20%),只有"ge“和”le“。如果通知在我插入或拔出之后停止也会很好。到目前为止,我的情况如下:

代码语言:javascript
复制
#!/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肉桂。

EN

回答 1

Unix & Linux用户

发布于 2020-05-19 08:52:58

这应该适用于你:

代码语言:javascript
复制
#!/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代表的是“其他”。如果第一个条件不起作用,他将检查第二个条件,如果这个条件不起作用,他将检查第三个条件,以此类推。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/587606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档