Я работаю над сценарием уведомления о батарее.
Извиняюсь за то, что это кусочек отладочного кода на данный момент.
Вот код, который у меня есть до сих пор ...
#!/bin/bash
BatteryCapacity=`cat /sys/class/power_supply/BAT0/capacity`
BatteryStatus=`cat /sys/class/power_supply/BAT0/status`
BatteryFull="Full"
BatteryDischarging="Discharging"
BatteryCharging="Charging"
CriticalAlert=97
NormalAlert=96
LowAlert=95
i=0
while true
do
if [ "$BatteryStatus" = "$BatteryDischarging" ]; then
if [ $BatteryCapacity -le $CriticalAlert ]; then
notify-send -u critical "Alert" "Battery Low!!!"
echo "Success01"
sleep 10
else
if [ "A" = "A" ]; then
echo "Success02"
sleep 10
fi
fi
fi
done
Когда $ BatteryStatus = Discharging (Discharging = Discharging) и $ BatteryCapacity = $ CriticalAlert (я изменяю это значение при отладке этой программы, чтобы соответствовать фактической емкости батареи), программа успешно выполнит первый набор условий и эхо "Success01".
+ '[' Discharging = Discharging ']'
+ '[' 97 -le 97 ']'
+ notify-send -u critical Alert 'Battery Low!!!'
+ echo 'Success 001'
Success 001
+ sleep 10
Но если мой $ BatteryStatus не равен разряде и заряжается или полностью, программа застрянет в ...
+ '[' Charging = Discharging ']'
+ true
+ '[' Charging = Discharging ']'
+ true
+ '[' Charging = Discharging ']'
+ true
+ '[' Charging = Discharging ']'
+ true
...
Я запутался почему программа застревает в + '[' Charging = Discharging ']' + true
l oop, а не переходит в другое условие.
Я использую bash -x SCRIPT.sh
для вывода отладки.
Я пытался искать в Интернете, но не могу найти ничего, что бы указывало на то, что я могу делать неправильно.
Вот ссылка на более вменяемую версию 2 скрипта уведомления о батарее, чтобы дать некоторый контекст тому, что я делаю.
Кто-нибудь хочет получить объяснение?
Заранее спасибо!