Algoritmos em Shell Script

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

[ Hits: 48.110 ]

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

Exploração de Falhas em Servidores FTP

Teste de Intrusão com Metasploit

Montando Servidor de Internet com Ubuntu Server

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

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

Leitura recomendada

Variáveis, if, else e unless em Ruby

Cansou do Konsole e GNOME-Terminal? Existem outros terminais, escolha o seu!

Introduzindo um pouco mais a fundo o shell script (revisado)

Wordpress em 30 segundos com WP-CLI

Exemplos práticos de comandos com Parted

  
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