Use apenas um loop while
:
while [ "$battery_level" -le 6 ] && [ "$STATUS" = "$NOT_CHARGING" ]
Eu tenho um comando assim:
if [ $battery_level -le 6 -a $STATUS = $NOT_CHARGING ] #Battery Low 1
then
/usr/bin/notify-send -i "$ICONL" "Battery critically low!" "Battery level is ${battery_level}%!"
paplay /usr/share/sounds/freedesktop/stereo/dialog-information.oga
Dá uma mensagem e um som em um determinado nível de bateria. Mas repete com muita frequência.
Eu posso configurá-lo para dormir e executar novamente separando o mesmo comando com uma linha como sleep 120s
, mas não sei exatamente quantas vezes ele deve ser executado.
Eu preciso que ele seja executado em um intervalo de dois minutos, indefinidamente (já que em algum momento a suspensão do sistema ou a hibernação é desencadeada por um script completamente diferente).
Olhando aqui: Como executar ou repetir um comando do Linux a cada X segundos para sempre , vejo que uma opção é sleep
e a outra é watch
.
watch
parece funcionar, mas só funciona com o formulário
watch -n 120 <my_line>
, e isso altera um pouco a saída (o nível da bateria não é mais mostrado).
Tags command-line