sábado, 20 de fevereiro de 2010

Cronômetro em Shell Linux

Este é um script em Shell que simula um cronômetro simples.

O código mostrado aqui é outra tentativa de aprendizado em Shell Linux. Na prática pode não ter utilidade nenhuma, dada sua simplicidade. Mas me ajudou a praticar novos conhecimentos.

Talvez sirva de ajuda pra alguém que também esteja estudando linguagem de terminal.

Código fonte no Pastebin: Clique AQUI

Abaixo o código original. Lembrando que ele pode ser melhor visualizado no Pastebin.

   1.      #!/bin/bash
   2.      #   Cronometro simples feito em Shell.
   3.      #   Script criado apenas para fins de estudo.
   4.      #   Para parar, use um [ctrl] + C.
   5.      #   Autor: Fabio Lima CE
   6.      #   Data: 2009-02-14
   7.       
   8.      #   Inicializacao das variaveis
   9.      SS=0;
  10.      MM=0;
  11.      HH=0;
  12.       
  13.      #   Inicio do 'loop infinito' que atualizara
  14.      # as variaveis a cada segundo.
  15.      #   A condicao 'sleep 1' se encarrega de gerar
  16.      # atrasos de um segundo a cada passagem.
  17.      while (sleep 1)
  18.      do
  19.              #   Testa a quantidade de segundos
  20.              #   Se SS > 59 entao MM++
  21.              if ( test $SS -gt 59)
  22.              then
  23.                      SS=0
  24.                      MM=$(echo "$MM + 1" | bc)
  25.              fi
  26.       
  27.              #   Testa a quantidade de minutos
  28.              #   Se MM > 59 entao HH++
  29.              if (test $MM -gt 59)
  30.              then
  31.                      MM=0
  32.                      HH=$(echo "$HH + 1" | bc)
  33.              fi
  34.       
  35.              #   Testa a quantidade de horas
  36.              #   Se HH > 23 entao Zera todas variaveis
  37.              if (test $HH -gt 23)
  38.              then
  39.                      MM=0
  40.                      HH=0
  41.                      HH=0
  42.              fi
  43.       
  44.              #   Mostra o tempo decorrido depois de atualizado
  45.              #   Opcoes do 'echo':
  46.              #   -n: desabilitar nova linha no final do comando (\n)
  47.              #   -e: habilitar o uso de caracteres de scape (\t, \n, \a \r etc)
  48.              echo -n -e "\rTempo decorrido: $HH h $MM min $SS seg "
  49.       
  50.              #   Acrescenta um segundo
  51.              #   O 'bc' eh uma realiza calculos com inteiros
  52.              SS=$(echo "$SS + 1" | bc)
  53.       
  54.      done

7 comentários:

  1. Ola Fabio seu blog é otimo, porem estou com duvidas pois comprei 1 placa kworld instalei e ela só abre em italiano ja fiz de tudo (desinstalei e instalei 3 vezes e nada mudou) pesso-lhe uma ajuda meu email é Mangue_da_gente@hotmail.com...obrigado

    ResponderExcluir
  2. Com não encontrei e-mail em relação ao seu comentário em blog do opovo para te mostrar que as provas é que não prestam e não necessariamente os educando, sabe que em Minas estão fazendo exame de sangue nas crianças para saber se não aprendem matemática por algum defeito genético.
    =======

    SEM HABILIDADE COM NÚMEROS
    Junia Oliveira, O Estado de Minas, 08/06/2010
    http://wwo.uai.com.br/EM/html/sessao_18/2010/06/08/interna_noticia,id_sessao=18&id_noticia=141062/interna_noticia.shtml
    Consta em http://www.exkola.com.br/scripts/noticia.php?id=34579041

    ResponderExcluir
  3. Greatings,

    I was looking at your FX12C project on sourceforg and I want to ask if the source code is available?

    Thanks and best regards,
    ~nastya

    ResponderExcluir
  4. Este comentário foi removido pelo autor.

    ResponderExcluir
  5. Muito bom o script, peguei o fonte e funcionou perfeitamente de primeira.

    ResponderExcluir
  6. Bom script, porém tem um pequeno BUG, talvez acidental ou não, na linha 39 a 41 a variável HH está repetida, isso significa que deve ser a SS, então ficaria HH=0 MM=0 SS=0.
    Em qualquer linguagem de programação o ideal e padrão é usar nomes de variáveis com letras minúsculas, isso evita conflito com variáveis de ambiente do S.O.

    ResponderExcluir