배터리 알림 스크립트에서 숫자 범위(11%~20%)를 표현하는 방법

배터리 알림 스크립트에서 숫자 범위(11%~20%)를 표현하는 방법

배터리가 90% 이상, 20% 이하, 10% 이하일 때 알려주는 스크립트를 원합니다. 전체 화면 모드에서 영화를 볼 때 표시되는 알림을 받을 수 있도록 알림 전송 대신 zenity를 사용하기 위해 다음을 조합했습니다. 내가 결코 알아낼 수 없었던 것은 "ge"와 "le"만으로 숫자의 범위(11%-20%)를 표현하는 방법입니다. 플러그를 꽂거나 뽑은 후에 알림을 중지하는 것도 좋습니다. 이것이 내가 지금까지 가지고 있는 것입니다:

#!/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                                                                                                                                           

문자를 사용하여 여러 조건을 확인할 수 있습니다 &&. 그리고 elifelse if를 나타냅니다. 첫 번째 조건이 작동하지 않으면 두 번째 조건을 확인하고, 그것도 작동하지 않으면 세 번째 조건을 확인하는 식으로 진행됩니다.

관련 정보