Algoritmo para converter minutos em hora

Publicado por Wagner Souza em 19/01/2015

[ Hits: 9.684 ]

Blog: https://medium.com/@souzaw

 


Algoritmo para converter minutos em hora



Dando continuidade ao meu artigo sobre Algoritmos em Shell Script, segue mais um bom exemplo de como utilizar as ferramentas desse ambiente para o aprendizado desta importante linguagem de script.

#!/bin/bash
#Autor: Wagner Souza
#Data: 15/01/2015
#Funcao: Algoritmo que converte minutos em horas

echo -n "Informe um valor em minutos a serem convertidos em horas: "
read min

# Esta primeira variável permite fazer a conversão dos minutos informado pelo
# usuário. A opção scale possibilita trabalhar com números decimais repassando o
# valor para a calculadora bc. O cálculo para converter minutos para hora
# é pegar a quantidade de minutos informado na variável $min e dividir por 60

conv1=$(echo "scale=2; $min/60" | bc)

# A variável conv3 vai trabalhar com os valores após a vírgula do resultado anterior
# Exemplo: se o usuário digitou 123 minutos, após a conversão feita na conv1, o valor
# obtido será 2,05 (123/60). Com o comando cut e a opção -c3-4 é utilizado para extrair
# os dois caracteres após a vírgula (0,5)

conv2=$(echo $conv1 | cut -c3-4)

# Finalmente, com os valores obtidos na variável conv2, podemos converter o restante
# dos números para minuto, ou seja, se o usuário digitou 123 minutos, em horas, corres-
# ponde a duas horas e 3 minutos. O valor de três minutos é obtido com a variável
# conv3 como pode ser visto abaixo.
# Aqui foi utilizado o comando tr para deletar (-d) o sinal de ponto final que fica
# quando é utilizado o comando cut. Faça um teste sem o comando tr e veja o que
# ocorre

conv3=$(echo "scale=2;($conv2/100)*60" | bc -l | cut -c1-2 | tr -d '.')
hour=$(echo "scale=2; $min/60" | bc | cut -c1-2 | tr -d '.' )

echo "Você digitou " $min " minutos."
echo "Que corresponde a: " $hour " hora(s) e " $conv3 " minutos"

Abaixo está o script completo sem os comentários para execução:

#!/bin/bash
#Autor: Wagner Souza
#Data: 15/01/2015
#Funcao: Algoritmo que converte minutos em horas

echo -n "Informe um valor em minutos a serem convertidos em horas: "
read min

conv1=$(echo "scale=2; $min/60" | bc)
conv2=$(echo $conv1 | cut -c3-4)
conv3=$(echo "scale=2;($conv2/100)*60" | bc -l | cut -c1-2 | tr -d '.')
hour=$(echo "scale=2; $min/60" | bc | cut -c1-2 | tr -d '.' )

echo "Você digitou " $min " minutos."
echo "Que corresponde a: " $hour " hora(s) e " $conv3 " minutos"

Não esqueça de salvar o arquivo com a extensão ".sh" e atribuir permissão de execução:

# chmod +x script.sh

É interessante rodar esse script da seguinte maneira:

# sh -x script.sh

Essa é uma forma de debug do script, onde você pode acompanhar passo-a-passo como este está sendo executado e solucionar possíveis problemas que venham a ocorrer.

Recomendo também a leitura do artigo para um maior esclarecimento e leituras complementares.

Bom pessoal, por hoje é só. Estarei disponibilizando mais scripts para estudos. Aguardem!

Outras dicas deste autor

Trabalhando com referências de células no LibreOffice

Trabalhando com datas no LibreOffice

Google Chrome no Fedora 24

Baixando arquivos de servidores FTP via linha de comando

Exercício Prático LPIC 01

Leitura recomendada

Dica para uso do echo

Java no Ubuntu - Parâmetros iniciais do Tomcat (parte 3)

Otimizando Digitação no Terminal Bash

Shell Script / Kommander

Shell - Encontrando erros

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts