Algoritmos em Shell Script

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

[ Hits: 48.780 ]

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


Funções



Conjunto de comandos agrupados em um bloco, que recebe um nome e através deste, pode ser ativado.

Por que utilizar funções?
  • Para permitir o reaproveitamento de código já construído (por você ou por outros programadores);
  • Para evitar que um trecho de código que seja repetido várias vezes dentro de um mesmo programa;
  • Para permitir a alteração de um trecho de código de uma forma mais rápida. Com o uso de uma função é preciso alterar apenas dentro da função que se deseja;
  • Para que os blocos do programa não fiquem grandes demais e, por consequência, mais difíceis de entender;
  • Para facilitar a leitura do programa-fonte de uma forma mais fácil;
  • Para separar o programa em partes (blocos) que possam ser logicamente compreendidos de forma isolada.[4]

A estrutura básica de uma função em Shell Script, é:

funcao ()
{

}

E a chamada feita no código, é digitando o nome da mesma:

funcao

Dentro de um script. Declare primeiro as funções, ao invés de fazer isso no final, caso contrário, irá apresentar erros.

Alguns exemplos de funções:

Algoritmo 016:

#!/bin/bash
#Autor: k666
#Data: 21/01/2013
#Algoritmo que calcula a raiz quadrada
#O cálculo trata-se de número exatos por exemplo: raiz quadrada
#de 4 é 2: 16 é 4. O Shell, por si só, não calcula valores
#de ponto flutuante a não ser que haja interação com a calculadora
#bc como já visto em outros algoritmos


raiz()
{

echo "Digite um número: "
read num

#Iniciando o contador com 1 pois não existe divisão por zero
i=1


while [ $i -lt $num ]
do

#Variável calc significa cálculo e calc2, cálculo2
#A variável calc fará a divisão do número passado pelo
#usuário e o contador. Em seguida este valor será multiplicado
#por ele mesmo na variável calc2.



    calc=$(($num / $i))
    calc2=$(($calc * $calc ))


#Aqui é realizado o teste que caso seja verdadeiro a
#condição $calc2 for igual a $num, haverá uma interrupção
#no loop (com o comando break) e será mostrado o comando
#echo logo abaixo



        if [ $calc2 -eq $num ]
        then
            break
        fi
    i=$(($i + 1))
done

echo "A raiz quadrada de $num é: $calc"

}

raiz

Algoritmo 017:

#!/bin/bash
#Autor: k666
#Data: 27/01/2013
#Algoritmo utilizado para criar, alterar e apagar
#contas de usuário do sistema Linux


menu()
{

echo _____________________________
echo
echo CADASTRAR USUÁRIOS NO SISTEMA
echo _____________________________
echo
echo
echo " 1 - Cadastrar "
echo " 2 - Procurar "
echo " 3 - Apagar "
echo " 0 - Sair "

echo "Escolha uma das opções acima: "
read op

case $op in
    1) cadastrar ;;
    2) procurar ;;
    3) apagar ;;
    0) exit ;;
    *) Opção inválida ;;
esac

}


cadastrar()
{

echo -n  "Nome completo: "
read nome

echo -n "Informe o nome para Login: "
read login

echo -n "Cargo: "
read cargo

#Comando para criar contas no Linux

useradd -d /home/$login -m -c "$nome - $cargo" -s /bin/bash $login

passwd $login

#Limpa a tela e volta ao menu principal

clear

menu

}

procurar()
{

echo -n "Informe o login do usuário: "
read login

cat /etc/passwd | grep -i $login

sleep 4
clear

menu

}

apagar()
{

echo -n "Informe o login do usuário: "
read login

echo -n "Apagar o diretório /home do usuário? (s ou n) "
read op

    if [ $op = "s" ]
    then
        userdel -r $login
    else
        userdel $login
    fi
sleep 3
clear

menu

}

#Chamando a função

menu

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

Teste de Intrusão com Metasploit

Atualização das provas LPIC-1, 304 e Essentials

Elastic SIEM - Instalação e Configuração do LAB (Parte I)

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

Exploração de Falhas em Servidores FTP

Leitura recomendada

Shell - Funções

Variáveis, if, else e unless em Ruby

Mostrando dicas ao iniciar o terminal

Montando, monitorando e gerando logs dos compartilhamento NFS automaticamente

Como matar um processo - kill, killall, pkill e xkill

  
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