Algoritmos em Shell Script

Abordando de forma conceitual e prática, a construção de algoritmos através de Shell Script.

[ Hits: 48.103 ]

Por: Wagner Souza em 20/06/2014 | Blog: https://medium.com/@souzaw


Primeiros algoritmos



Para a construção de algoritmos, é muito importante a organização do código. Para este artigo, será seguido um padrão para a criação dos algoritmos, como mostrado abaixo:

#!/bim/bash
#Autor:
#Data:

A primeira linha especifica o interpretador, que é indicado pelos caracteres #!, termo conhecido como shebang. O caractere #, significa que a linha é um comentário e não deverá ser interpretada pelo shell.

Para iniciarmos o primeiro script, abra o terminal e, de acordo com a sua preferência, escolha um editor de textos para começar:

nano alg.001.sh

Dentro do editor de texto, vamos escrever nosso primeiro algoritmo. Este algoritmo terá a função de receber dois números do usuário e efetuar uma soma.

Algoritmo 001:

#!/bin/bash
#Autor: k666
#Data: 13/07/2013
#Algoritmo que recebe dois números pelo usuário e realiza a soma destes


echo "Digite o primeiro número: "
read num1
echo "Digite o segundo número: "
read num2

soma=$((num1+num2))

echo "Total: $soma"

Salve o arquivo e, em seguida, lhe atribua a permissão de execução:

sudo chmod +x alg001.sh
$ ./alg001.sh


As variáveis foram declaradas junto ao código e foram utilizadas três. O comando echo é usado para imprimir informações na tela. O read, lê o conteúdo da variável.

Abaixo, serão apresentados mais exemplos de algoritmos. Proceda da mesma forma como mostrado anteriormente, sempre criando um novo arquivo de texto e após seu término, salve-o e lhe dê permissão de execução.

Algoritmo 002:

#!/bin/bash
#Autor: k666
#Data: 13/07/2013
#Algoritmo que calcula o desconto e total do valor de uma compra


echo "Valor do produto:  "
read valp
echo "Quantidade de produtos: "
read qtd
echo "Informe o valor do desconto: "
read desc

#Cálculo do total inicial das compras
tcompra=$((valp*qtd))

#Cálculo para saber o desconto
tdesc=$((tcompra*desc/100))

#O valor final das compras será o valor total menos os descontos
total=$((tcompra-tdesc))

echo "Total das Compras: $total"

Para este exemplo foram usadas seis variáveis, separados os cálculos para ficar mais fácil o aprendizado e evitar erros no resultado final.

A grande dificuldade que muitos enfrentam em aprender lógica de programação, é oriundo de uma base fraca na matemática. Nos dois exemplos utilizados, foram postos elementos da matemática para resolução de problemas do cotidiano.

Algoritmo 003:

#!/bin/bash
#Autor: k666
#Data: 13/07/2013
#Algoritmo que recebe três notas fornecidas pelo usuário e calcula a média final

#Os valores das duas variáveis abaixo estão entre crases
#O comando date, sleep e clear fazem parte do sistema GNU/Linux
#O comando date retorna a data e hora atual do sistema. Aqui foi utilizado o comando
#date para retornar separadamente o dia (%d), mês (%m), ano (%Y) e hora (%T - time)


data=`date +%d/%m/%Y`
hora=`date +%T`

echo "Data atual: $data"
echo "Hora atual: $hora"

#$USER é uma variável pré-definida do sistema que exibe o usuário atual logado no sistema
echo "Bem-vindo usuário $USER"
#Realiza uma pausa de 3 segundos, ou mais você é que define,
#antes de executar o próximo comando

sleep 3
#Comando que serve para limpar a tela
clear

echo "Informe o nome do aluno: "
read nome
echo "Digite a primeira nota  "
read nota1
echo "Digite a segunda nota  "
read nota2
echo "Digite a terceira nota  "
read nota3

media=$(((nota1+nota2+nota3)/3))

echo "A média final do aluno $nome é: $media"

Neste último algoritmo, dei uma incrementada com comandos do sistema GNU/Linux. Essa é uma das grandes vantagens de trabalhar com Shell Script.

Fiz o comentário direto no código, isso é importante, pois, com o decorrer do tempo, você termina esquecendo a funcionalidade de um código, principalmente quando este passa a ter muitas linhas.

À medida que os algoritmos forem aumentando de complexidade, apresentarei outros comandos do GNU/Linux junto com explicações.

Algoritmo 004:

#!/bin/bash
#Autor: k666
#Data: 13/07/2013
#Algoritmo que inverte o valor das variáveis
#Este valor deve ser informado pelo usuário


echo "Digite um valor qualquer:  "
read var1
echo "Digite um outro valor qualquer: "
read var2

echo "Valores atuais das variáveis: "
echo "var1 = $var1 | var2 = $var2 "


#Será criada mais uma variável que armazenará um dos valores
#para realizar a troca


aux="$var2"
var2="$var1"
var1="$aux"

#O echo sem nenhuma informação serve para pular uma linha
echo

echo "Valores invertidos das variáveis: "
echo "var1 = $var1 | var2 = $var2 "

Algoritmo 005:

#!/bin/bash
#Autor: k666
#Data: 20/07/2013
#Algoritmo converte em graus Celsius e apresenta-a convertida
#em graus Fahrenheit. A fórmula de conversão é: F=(9*C+160) / 5,
#sendo F a temperatura em Fahrenheit e C a temperatura em Celsius.



echo "Informe a temperatura em graus Celsius:  "
read cel

fah=$((9*$cel+160))

echo "Temperatura em Fahrenheit: $fah"

Página anterior     Próxima página

Páginas do artigo
   1. Introdução / O Shell Script
   2. Variáveis / Operadores
   3. Primeiros algoritmos
   4. Estrutura de seleção
   5. Estrutura de repetição
   6. Funções
   7. Vetor (array)
Outros artigos deste autor

Shell Script nosso de cada dia - Episódio 3

Resetando senha de usuário root em sistemas Debian e Red Hat

Exploração de Falhas em Servidores FTP

Montando Servidor de Internet com Ubuntu Server

Teste de Intrusão com Metasploit

Leitura recomendada

Dialog em GTK

Introduzindo prazerosamente aos poucos... o shell script

Simples e rápido: matando todos os processos de um usuário

Exemplos práticos de comandos com Parted

Colorindo o Shell

  
Comentários
[1] Comentário enviado por di4s em 20/06/2014 - 00:36h

muito bom, parabéns

[2] Comentário enviado por jwolff em 20/06/2014 - 09:22h

obrigado por compartilhar seu conhecimento

[3] Comentário enviado por wagnerfs em 20/06/2014 - 09:38h

Obrigado pessoal pelo incentivo. Acompanhem também os exercícios práticos para LPI que semanalmente posto aqui no VOL. Em breve estarei disponibilizando novos artigos.

[4] Comentário enviado por removido em 20/06/2014 - 12:01h

Ótimo artigo!

Estou estudando Lógica de Programação e ajudou a estudar as variáveis/operadores de forma mais ampla.
VLW!

[5] Comentário enviado por danniel-lara em 20/06/2014 - 14:28h

Meus Parabéns
Muito bom o seu Artigo

[6] Comentário enviado por andregyn em 21/06/2014 - 10:26h

Muito bom!!
Parabéns pelo artigo.

[7] Comentário enviado por xerxeslins em 21/06/2014 - 10:55h

Curti. já botei nos favoritos.

[8] Comentário enviado por removido em 21/06/2014 - 15:19h

Muito bom,espalhando conhecimento!Quando eu pegar mais as manhas do linux e unix também pretendo postar umas dicas aqui.Estou estudando C e shellScript também,foi de grande ajuda.

[9] Comentário enviado por xjc em 22/06/2014 - 00:43h

Show de bola, inovou e jogou duro, parabéns

[10] Comentário enviado por removido em 24/06/2014 - 10:43h

Muito bom seu artigo! Estou iniciando em shellscript e foi de grande proveito este artigo. Escreve muito bem e a bibliografia que utilizou também é muito boa.
Poderia me dizer onde se encontra estes exercícios para a LPI?
Um grande abraço!

[11] Comentário enviado por wagnerfs em 24/06/2014 - 10:50h

Obrigado malkoonqnu. Segue o link do primeiro exercício http://www.vivaolinux.com.br/dica/Exercicio-Pratico-LPIC-01. Abaixo deste, tem o link do segundo. Toda semana estou postando novos exercícios.

[12] Comentário enviado por andregyn em 09/07/2014 - 20:26h

A variável para conversão de Celsius para Fahrenheit ficaria assim: fah=$((9*$cel/5+32))
Belo artigo.

[13] Comentário enviado por raphaellima em 24/09/2014 - 12:03h

Muito bom velho.

[14] Comentário enviado por cleciosc em 30/09/2014 - 20:48h

Excelente artigo.

Ps.: Após apresentada a formula ( F=(9*C+160) / 5 ), o calculo efetuado no script está incorreto, fah=$((9*$cel+160)). Faltou a divisão por 5, ou seja, estaria apresentando um cálculo errado no meu script.

Só foi uma observação principalmente para aqueles que estão acostumados com as teclas CTRL+C e CTRL+V.







Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts