首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在这个巴什剧本里做了什么错事?

我在这个巴什剧本里做了什么错事?
EN

Stack Overflow用户
提问于 2019-04-01 16:46:27
回答 2查看 212关注 0票数 0

我摸索这个bash脚本已经有一段时间了,但是我还不太熟悉bash脚本来解决这个问题。这是我的剧本:

代码语言:javascript
复制
    #!/usr/bin/bash

# Battery level warning script

NOTIFIED=0

while true; do

    BATTERY_LEVEL=$(cat /sys/class/power_supply/BAT0/capacity)
    STATE=$(cat /sys/class/power_supply/BAT0/status)

    echo "beep"
    # notify user of battery level
    if [ $STATE == "Discharging" ] ; then
        echo "Discharging"
        if [ $NOTIFIED -lt "1" && $BATTERY_LEVEL -lt "50" && $BATTERY_LEVEL -gt "10" ]; then
            echo "Battery >10%, < 50%"
            sudo -u korgan DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send "Battery low warning" "Battery level is ${BATTERY_LEVEL}%" --icon=battery-low
            NOTIFIED=1
        elif [ $NOTIFIED -lt "2" && $BATTERY_LEVEL -lt "11" && $BATTERY_LEVEL -gt "5" ]; then
            echo "Battery >5%, <11%"
            sudo -u korgan DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send "Battery very low warning" "Battery level is ${BATTERY_LEVEL}% Use ac power now, or shutdown is imminent - close applications"  --icon=battery-caution
            NOTIFIED=2
        elif [ $NOTIFIED -lt "3" && $BATTERY_LEVEL -lt "6" ]; then
            echo "Battery <6%"
            sudo -u korgan DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send "Battery critical warning" "Battery level is ${BATTERY_LEVEL}% Shutting system down now"
            NOTIFIED=3
        fi
    elif [ $STATE == "Charging" ]; then
            echo "Charging"
        NOTIFIED=0
    fi

    if [ $BATTERY_LEVEL -gt "60" ]; then
        echo "Battery > 60%: waiting 10 secs"
        sleep 10
    else
        echo "Battery <=60%: waiting 5 secs"
        sleep 5
    fi
done

目标是得到通知-发送警告时,我的电池正在放电,并在一定程度的充电。我得到的错误是

代码语言:javascript
复制
./battery_check.sh: line 16: [: missing `]'
./battery_check.sh: line 20: [: missing `]'
./battery_check.sh: line 24: [: missing `]'
Battery > 60%: waiting 10 secs
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-01 16:50:15

更改:

代码语言:javascript
复制
if [ $NOTIFIED -lt "1" && $BATTERY_LEVEL -lt "50" && $BATTERY_LEVEL -gt "10" ]; then`

代码语言:javascript
复制
if [ "$NOTIFIED" -lt "1" ] && [ "$BATTERY_LEVEL" -lt "50" ] && [ "$BATTERY_LEVEL" -gt "10" ];  then  ....`
票数 3
EN

Stack Overflow用户

发布于 2019-04-01 16:50:21

在第16行、第20行和第24行都有语法错误。它应该是

代码语言:javascript
复制
if [ $NOTIFIED -lt "1" ] && [ $BATTERY_LEVEL -lt "50" ] && [ $BATTERY_LEVEL -gt "10" ];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55459953

复制
相关文章

相似问题

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