バッテリー通知スクリプトで数値範囲(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を表します。最初の条件が機能しない場合は2番目の条件をチェックし、それが機能しない場合は3番目の条件を確認する式に進みます。

関連情報