shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Contagem de tempo em background


From: Julio C. Neves
Subject: Re: [shell-script] Contagem de tempo em background
Date: Fri, 23 Dec 2016 10:12:40 -0200

Eu vi que seu script já funcionava, então só dei uma guaribada, para torná-lo mais veloz, mas quero fazer umas observações:

Pela construção do seu script, creio que vc está o rodando sob UNIX, se assim for, troque #!/bin/bash por #!/bin/ksh. O /bin/sh no Linux é o que existe de pior na face da terra e não tem nada a ver com o /bin/sh, que é Bourne Shell do UNIX;

Em nome da portabilidade, dê preferencia ao echo -n em detrimento do echo ...\c, pois esse último para funcionar em Linux, precisa ser echo -e ..../c;

Eu sempre aconselho a não usar nomes de variáveis com letras maiúsculas. Se vc não fizer isso, é muito provável que mais cedo ou mais tarde vc usará, sem querer, o nome de uma variável de sistema no seu script, gerando erros de lógica dificílimos de serem detectados;

No lugar onde botei um sleep 10, poderia ter o restante do seu programa, que seria executado simultaneamente com a contagem;

Antigamente os terminais burros tinham uma linha de status que normalmente eram vermelhas ou verdes. Simulei uma.

Aí vai o código:

#!/bin/bash
Lin=$(tput lines)
Col=0
Tempo=5
Flg=
tput cup $Lin 0
tput setab 1                       # background vermelho
tput ed
echo -n TEMPO RESTANTE: 
until ((Flg))
do
        tput cup $Lin 22
        echo -n $Tempo
        let Tempo-=1               # cmd let é muito veloz
        if ((Tempo < 0))
        then
                sleep 1
                tput cup $Lin 0
                echo -n "O TEMPO ACABOU"
                tput setab 9       # Restaura background default
                tput ed
                Flg=1
        fi
        sleep 1
done &
sleep 10


Abcs,
Julio

Damos treinamento em sua empresa por 
um preço, 
no mínimo, 50% mais barato que qualquer curso,
com certificado e nota fiscal.

​​
Nosso time de instrutores in company é formado somente por
autores
​ ​
de Best Sellers
​ ​
​laureados ​sobre os temas. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host


Em 22 de dezembro de 2016 13:19, address@hidden [shell-script] <address@hidden> escreveu:
 

 Falae pessoal,

   Bem, estou criando um script para contagem de tempo fazendo uso do tput. A ideia é que o script mostrasse a mensagem de tempo no final da tela (rodando em background), mas que pudesse liberar o shell na parte de cima para que o usuário pudesse fazer outras coisas e quando a contagem encerrar, finalizaria com outra mensagem de fim. Sei que é possível dividir a tela com o tput, mas não sei como fazer. Há alguma forma de liberar o shell para o usuário, enquanto a mensagem é mostrada no final da tela? Ou seja, limitaríamos uma pequena parte da tela para a mostragem das mensagens, enquanto a parte de cima do shell ficaria liberada para o usuário fazer outras coisas. Segue abaixo o script:

#!/bin/sh
LIN="`tput lines`"
COL=0
TEMPO=5
flag="0"
while [ "$flag" -eq "0" ]
do
        tput ed
        tput cup $LIN 0
        echo "TEMPO RESTANTE: \c              "
        tput cup $LIN 22; echo "$TEMPO\c"
        TEMPO=$(($TEMPO-1))
        if [ $TEMPO -lt 0 ]
        then
                sleep 1
                tput ed
                tput cup $LIN 0
                echo "O TEMPO ACABOU\c"
                tput ed
                flag="1"
        fi
        sleep 1
done &

Abraço a todos,

Junior.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]