배터리 경고 스크립트를 보내는 디버그 알림

배터리 경고 스크립트를 보내는 디버그 알림

나는 한때 crontab -e다음과 같이 정의했습니다.

*/5 * * * * env DISPLAY=:0 /home/max/.bin/battery-check.sh

스크립트의 내용은 다음과 같습니다.

#!/bin/bash                                                          

# Battery level warning script

battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`

if [[ "$battery_level" -le "80" && "$battery_level" -gt "10" ]]
    then
    notify-send "Battery low warning"  "
Battery level is ${battery_level}%"
elif [[ "$battery_level" -le "10" && "$battery_level" -gt "5" ]]
    then
    notify-send "Battery very low warning"  "
Battery level is ${battery_level}%
Use ac power now,
 or shutdown is imminent - close applications"
else [[ "$battery_level" -le "5" ]]
    # our custom actions for critical battery level
    notify-send "Battery critical warning"  "
Battery level is ${battery_level}%
Shutting system down now"
fi

일부 문(예: 첫 번째 문 -le "80")은 테스트/디버깅 목적으로만 사용됩니다. 이 스크립트의 문제점은 5분마다 마지막 조건을 보고하는 창이 팝업된다는 것입니다.

배터리 위험 경고.
배터리 수준이 100%
이며 시스템이 종료됩니다.

답변1

처음 두 조건 중 어느 것도 충족되지 않으므로 else실행되는 블록에는 다음이 포함됩니다.

[[ "$battery_level" -le "5" ]]    # evaluates this, which does nothing
notify-send ...                   # shows the message you are seeing

이것이 당신이 원하는 것입니다:

#!/bin/bash                                                          

# Battery level warning script

battery_level=`acpi -b | grep -oP '[0-9]+(?=%)'`

if [[ $battery_level -le 80 && $battery_level -gt 10 ]]; then
    notify-send "Battery low warning"  "
Battery level is ${battery_level}%"
elif [[ $battery_level -le 10 && $battery_level -gt 5 ]]; then
    notify-send "Battery very low warning"  "
Battery level is ${battery_level}%
Use ac power now,
 or shutdown is imminent - close applications"
elif [[ $battery_level -le 5 ]]; then
    # our custom actions for critical battery level
    notify-send "Battery critical warning"  "
Battery level is ${battery_level}%
Shutting system down now"
fi

관련 정보