バッテリー警告スクリプトを送信するデバッグ通知

バッテリー警告スクリプトを送信するデバッグ通知

私はかつて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

最初の2つの条件のいずれも満たされないため、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

関連情報