Repetir o comando após um período de tempo

0

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).

    
por cipricus 01.04.2017 / 19:53

1 resposta

1

Use apenas um loop while :

while [ "$battery_level" -le 6 ] && [ "$STATUS" = "$NOT_CHARGING" ]
    
por 01.04.2017 / 19:59