introdução ao shell script no linux

Upload: renato-costa

Post on 18-Oct-2015

43 views

Category:

Documents


0 download

TRANSCRIPT

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 1/36

    Gostei (1) (1)

    Buscar

    post favorito comentrios

    Introduo ao Shell Script no

    Linux

    Veja neste artigo como criar e utilizar Shell Scripts no

    sistema operacional Linux. Sero apresentados os

    principais conceitos e a sintaxe bsica da linguagem

    utilizada para este fim.

    Introduo

    Muitas vezes necessrio fazer um mesmo comando ou conjunto de comandos para

    um determinado fim no terminal linux, com o passar do tempo isso pode acabar se

    tornando cansativo e at estressante. Para facilitar essa situao e aliviar aes

    15 19Curtir23

    LOGIN

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 2/36

    repetitivas podemos utilizar o shell Scripts.

    De maneira grosseira um Shell Scritp nada mais que uma sequncia de comandos do

    prprio Linux que so executados em uma determinada sequncia para um

    determinado fim.

    1. Criando um shell script

    Para criar um shell script necessrio seguir alguns passos:

    1.1. Crie um arquivo

    No terminal ou modo grfico crie um arquivo que possa ser editado para que se torne o

    primeiro shell script a ser criado.

    Exemplo:

    Listagem 1: Criao do shell1.sh

    touch shell1.sh

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 3/36

    Figura 1: Criao do arquivo shell1.sh

    Onde:

    touch - Comando utilizado para criar um arquivo vazio.

    1.2. D direito de execuo para o arquivo criado

    Para que seja possvel executar o shell script preciso atribuir ao mesmo o direito de

    execuo, para isso necessrio usar o comando chmod com a opo +x.

    Exemplo:

    Listagem 2: Adio do direito de execuo ao arquivo shell1.sh

    chmod +x shel11.sh

    Figura 2: Atribuindo direito de execuo ao arquivo shell1.sh

    Antes de atribuir o direito de execuo, o arquivo era visto pelo terminal da cor padro

    (neste caso preto), com o direito de execuo agora passou a ser verde.

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 4/36

    Figura 3: Viso do arquivo shell1.sh antes da atribuio do direito de execuo para o

    arquivo shell1.sh

    Abaixo possvel ver a imagem aps execuo do chmod.

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 5/36

    Figura 4: Visualizao do arquivo shell1.sh aps a atribuio do direito de execuo

    para o mesmo

    1.3. Abra o arquivo recm criado para edit-lo

    Neste artigo foi utilizado o editor de texto vim que pode ser acessado atravs terminal,

    porm fica a critrio do leitor utilizar qualquer editor grfico como gedit para alterar o

    arquivo recm criado.

    Exemplo:

    Listagem 3: Abertura do arquivo shell1.sh para edio

    vim shell1.sh

    Figura 5: Figura demonstrando a sintaxe do comando vim para edio do arquivo

    shell1.sh

    A primeira linha escrita do shell script utilizada para informar qual modelo de shell ser

    utilizado para criar o shell script (ksh, sh, bash), a linha pode ser vista abaixo:

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 6/36

    Listagem 4: Viso da primeira linha shell script

    #!/bin/bash

    Cdigo visto no vim:

    Figura 6: Viso do trecho de cdigo inicial no terminal

    Abaixo possvel ver o cdigo quando editado pelo gedit.

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 7/36

    Figura 7: Viso do cdigo do shell script atravs do gedit

    Esta linha especifica qual shell ser responsvel por executar o shell scritp que ser

    criado, neste exemplo o shell responsvel ser o bash que est localizado na pasta /bin.

    Aps a linha que contm o cdigo refrente ao tipo de shell possvel inserir os

    comandos desejados.

    Neste exemplo vamos fazer um shell que abre a baia do leitor de cd e aps 3 segundos

    a mesma ser fechada. O cdigo pode ser visto abaixo:

    Listagem 5: Shell Script que abre a gaveta do leitor de cd

    #!/bin/bash

    echo "Abrindo gaveta..."

    eject

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 8/36

    sleep 1

    echo "A gaveta ser fechada..."

    sleep 1

    eject -t

    Figura 8: Figura com o contedo do shell script shell1.sh

    Onde:

    echo - Comando responsvel por exibir uma mensagem na tela.

    eject - Comando responsvel por fazer a baia do leitor de cd ejectar.

    eject -t - Comando reponsvel por fazer a baia do leito de cd voltar para seu

    estado inicial.

    sleep - Comando que pausa um o terminal por um tempo em segundos pr

    determinado.

    1.3.1 Insero de comentrios

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 9/36

    Os comentrios so de suma importncia para deixar informaes para manipulao

    futura do shell script. Para inserir um comentrio em cdigos de shell script basta inserir

    o #(cerquilha ou jogo da velha) na frente da linha que voc deseja comentar:

    Sintaxe: #comentrio

    Onde:

    comentrio Comentrio em si.

    Exemplo:

    Listagem 6: Shell Script com comentrio

    #!/bin/bash

    #Eu sou um comentrio.

    echo Existe um comentrio neste shell script

    Figura 10: Figura que demonstra a execuo do shell1.sh

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 10/36

    Caso o shell1.sh esteja em diretrio diferente do qual voc se localiza, execute shell

    script da seguinte maneira:

    Sintaxe: /.../diretorio/shel1.sh

    Onde:

    /.../diretorio - diretrio no qual o shell est localizado.

    Exemplo: /tmp/maguscode/shel1.sh

    Figura 11: Execuo do shell1.sh a partir de um diretrio diferente

    2. Utilizando Vriaveis

    A utilizao de variveis em shellscript muito importante como em qualquer linguagem

    de programao. Para criar uma varivel em shell script bem simples, basta seguir a

    sintaxe abaixo:

    Sintaxe: nome_varivel=VALOR

    Onde:

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 11/36

    nome_variavel Nome da varivel.

    VALOR Valor atribudo a varivel criada.

    Exemplos:

    Neste exemplo foram criadas as variveis cor_casa que tem como atributo o valor

    verde, e a varivel numero que tem como atributo o valor 32.

    Listagem 7: Criao de varivel

    cor_casa=verde

    numero=32

    Para se utilizar a varivel basta utilizar o $ (Cifro) na frente do nome da varivel, como

    pode ser visto no cdigo do shell script baixo.

    Listagem 8: Exemplo de shell script que exibe contedo da varivel na tela

    #!/bin/bash

    cor_casa=VERDE

    echo A cor da casa $cor_casa

    exit

    A sada ser: A cor da casa VERDE

    2.1 Utilizando sada de comando como valor de varivel

    Para direcionar a sada de um determinado comando para uma varivel, basta escolher

    uma das seguintes sintaxes:

    Sintaxe: nome_variavel=$(comando) ou nome_variavel=`comando`

    Onde:

    nome_variavel Nome da varivel que receber a sada do comando.

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 12/36

    comando Comando a ser executado.

    No exemplo ser criado um shell script chamado total.sh que tem como objetivo contar

    o total de linhas (arquivos) que um diretrio tem.

    Listagem 9: Script shell que conta o total de arquivos em um diretrio

    #!/bin/bash

    total_linhas=$(ls | wc -l)

    echo Existe $total_linhas neste diretrio.

    Esse script shell exibe na tela a quantidade de arquivos existe em um determinado

    diretrio.

    Figura 12: Demonstrao do total de arquivos do diretrio /tmp

    Sada do script executado:

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 13/36

    Figura 13: Sada da execuo do shell script total.sh

    Figura 13: Sada da execuo do shell script total.sh

    2.2 Capturar valores do teclado

    Uma maneira de capturar o que um determinado usurio digita atravez do comando

    read.

    Sintaxe: read $variavel;

    Onde:

    $variavel Nome da varivel que recebera o valor do teclado.

    Ser feito shell script chamado qualnome.sh no qual o usurio digita um nome e o

    mesmo exibido na tela.

    Listagem 10: Exemplo utilizando captura do valor da varivel atravs do teclado

    #!/bin/bash

    echo Qual seu nome:

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 14/36

    read nome;

    echo Bem vindo $nome

    exit

    Figura 14: Nome do usurio digitado durante a execuo do shellscript

    3. Tomada deciso

    3.1 Comando if

    O comando if um comando para tomada de deciso. O mesmo realiza uma

    determinada ao quando um requisito atendido.

    Sintaxe:

    if [ condio ]; then

    ao

    fi

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 15/36

    Onde:

    condio - Condio para continuar no lao

    ao - Comandos ou comportamentos que sero executados dentro do lao

    Ser criado um exemplo no qual o usurio digitar um valor na tela e s sera exibida

    uma mensagem na tela caso esse valor seja igual ao numero 3.

    Listagem 11: Utilizao do comando if

    #!/bin/bash

    echo -n "Digite um algo: "

    read valor_digitado

    if [ "$valor_digitado" -eq "3" ];

    then

    echo Voc digitou o numero 3

    fi

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 16/36

    Figura 15: Demonstrao do cdigo com o comando condicional if no shell script

    Figura 16: Demonstrao da saida do shell script que contm um comando condicional

    if

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 17/36

    3.1 Comando if/else

    O comando if/else um comando para tomada de deciso. O if faz com que uma

    determinada ao seja executada quando um requisito atendido, caso contratrio ser

    utilizado o que estiver no bloco do comando else.

    Sintaxe:

    if [ condio ]; then

    ao

    fi

    Onde:

    condio - Condio para continuar no lao

    ao - Comandos ou comportamento que ser executado dentro do lao.

    Ser criado um exemplo no qual o usurio digitar um valor na tela e s ser exibida

    uma mensagem na tela caso esse valor seja igual ao numero 3.

    Listagem 12: Utilizao do comando if/else

    #!/bin/bash

    echo -n "Digite um algo: "

    read valor_digitado

    if [ $valor_digitado -eq 3 ];

    then

    echo Voc digitou o numero 3

    else

    echo "Voc digitou o caracter $valor_digitado";

    fi

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 18/36

    Figura 17: Demonstrao do cdigo com o comando condicional if no shell script

    Figura 18: Demonstrao da sada do shell script que contm um comando condicional

    if

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 19/36

    3.3. Comando elif

    O comando elif um comando para tomada de deciso. O comando elif depende do

    comando if e o mesmo funciona de maneira similar ao else/if, porm o elfi tambm tem

    uma condio, que ser executada caso um condio seja tendida.

    Sintaxe:

    if [ condio ]; then

    ao

    elif [condio]; then

    ao

    elif [condio]; then

    ao

    fi

    Onde:

    condio - Condio para continuar no lao

    ao - Comandos ou comportamento que ser executado dentro do lao.

    Ser criado um exemplo no qual o usurio digitar um valor na tela e s ser exibida

    uma mensagem na tela caso esse valor seja igual ao numero 3,4 ou 5.

    Listagem 13: Utilizao do comando if/elif

    #!/bin/bash

    echo -n "Digite um algo: "

    read valor_digitado

    if [ $valor_digitado -eq 3 ];

    then

    echo "Voc digitou o numero 3"

    elif [ $valor_digitado -eq 4 ]; then

    echo "Voc digitou o numero 4"

    elif [ $valor_digitado -eq 5 ]; then

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 20/36

    echo "Voc digitou o numero 5"

    else

    echo Voc no digitou nenhum nmero aceito

    fi

    Figura 19: Demonstrao do cdigo com o comando condicional elif no shell script

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 21/36

    Figura 20: Demonstrao da saida do shell script que contm um comando condicional

    elif

    3.4. Comando case

    O comando case, assim como o if, um comando para tomada de deciso.

    Sintaxe:

    case variavel in

    opcao1) acao1

    ;;

    opcao2)

    acao2

    ;;

    opacaoN)

    acaoN

    ;;

    esac

    Onde:

    variavel Varivel que ser verificada.

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 22/36

    opcao1/2/N Possveis estados da variavel.

    acao1/2/N Ao a ser tomada quando a opo do mesmo for escolhida.

    Ser criado um script utilizando case que exibe uma mensagem quando pressionada a

    teclada 2 e outra quando apertada a tecla 3.

    Listagem 14: Exemplo utilizando comando case

    #!/bin/bash

    echo "Digite 1 ou 2"

    read opcao;

    case "$opcao" in

    "1")

    echo "Voc digitou 1";

    ;;

    "2")

    echo "Voc digitou 2";

    esac

    exit

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 23/36

    Figura 21: do cdigo com o lao for no shell script

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 24/36

    Figura 22: Demonstrao da saida do shell script que contm um lao while

    4. Laos condicionais

    4.1 Lao for

    O lao for uma executa uma ao repetitivamente at que uma condio seja

    atendida.

    Sintaxe:

    for contador in limite_contador;

    do

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 25/36

    acao

    done

    Onde:

    contador - Varivel que ser utilizada no lao for.

    limite_contador - Limite que o contador poder atingir. Quando o limite for

    atingido o lao terminar.

    ao - Comandos ou comportamento que ser executado dentro do lao.

    Para exemplo o lao ser criado um shellscript simples que exibi na tela uma mensagem

    4 vezes.

    Listagem 15: Utilizao do lao for

    #!/bin/bash

    limite_contador=4

    for contador in {1..4};

    do

    echo "Messagem exibida $contador vez".

    sleep 1;

    done

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 26/36

    Figura 23: Demonstrao do cdigo com o laofor no shell script

    Figura 24: Demonstrao da sada do shell script que contm um lao while

    4.2 Lao while

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 27/36

    O while um tipo de lao que existe em vrias linguagens de programao. O mesmo

    executa uma ao enquanto um requisito no atendido.

    Sintaxe:

    while [ condicao ]

    do

    acao

    done

    Onde:

    condicao - Condio para continuar no lao

    ao - Comandos ou comportamento que ser executado dentro do lao.

    Agora ser criado um shell script simples que exibi na tela uma mensagem quatro

    vezes.

    Listagem 16: Utilizao do lao while

    #!/bin/bash

    contador=1

    while [ $contador -ne 4 ];

    do

    echo "Messagem exibida $contador vez".

    sleep 1;

    ((contador=$contador+1))

    done

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 28/36

    Figura 26: Demonstrao da sada do shell script que contm um lao while

    5. Funoes

    Assim como em qualquer "linguagem de programao" o shell script proporciona a

    utilizao de funes.

    Sintaxe:

    nome_funcao ()

    {

    funcao_2;;

    }

    nome_funcao_2 ()

    {

    acao

    }

    nome_funcao

    Onde:

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 29/36

    nome_funcao Funco criada.

    acao Ao a ser tomada.

    nome_funcao_2;; - Chamada da funo nome_funcao_2.

    nome_funcao Funo que dar inico ao shell script.

    Ser criado um shell script para no qual possvel escolher se ser feito uma tabuada

    do 2 ou do 3 sendo que cada uma feita por uma funo.

    Listagem 17: Utilizao de funes

    #!/bin/bash

    principal()

    {

    escolha=-1

    while [ $escolha -ne 0 ];

    do

    echo "Escolha uma opo"

    echo "1- Fazer tabuada do 2";

    echo "2- Fazer tabuada do 3";

    echo "0- Sair";

    echo -n ":";

    read escolha;

    if [ "$escolha" -eq "1" ];

    then

    gerarTabuada2

    elif [ "$escolha" -eq "2" ];

    then

    gerarTabuada3

    fi

    done

    }

    gerarTabuada3()

    {

    for i in {1..10}; do

    echo "$i*3="$i*3

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 30/36

    done

    }

    gerarTabuada2()

    {

    for i in {1..10}; do

    echo "$i*2="$i*2

    done

    }

    principal

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 31/36

    Figura 27: Demonstrao do cdigo fonte de um shell script com funes

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 32/36

    Gostei (1) (1)

    O que voc achou deste post?

    Figura 28: Demonstrao da saida do shell script com funes

    Concluso

    Como foi possvel ver ao longo do artigo, a criao de shell script pode vir a ser muito

    til para usurios de Linux, seja para pequenas funes que so feitas repetidamente

    todo os dias ou funes mais complexas.

    Robson Fernando Gomes

    Programador Java. Cursando o ultimo ano de Cincia da computao da Faculdade Salesiana do Estado

    So Paulo no campos de Lorena - SP.

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 33/36

    Poste seu comentrio

    Flav io Moraes

    Seu ltimo script no funciona. A correo que fiz fo i testada em vrias distribuies e

    est funcionando. A correo essa:

    #!/bin/bash

    pr incipal()

    {

    escolha=-1

    while [ $escolha -ne 0 ];

    do

    echo "Escolha uma opcao"

    echo "2 - fazer tabuada do 2";

    echo "3 - fazer tabuada do 3";

    echo "0 - Sair";

    echo -n ": ";

    read escolha;

    if [ "$escolha" -eq "2" ];

    then

    gerarTabuada2

    elif [ "$escolha" -eq "3" ];

    then

    gerarTabuada3

    fi

    done

    }

    gerarTabuada3()

    {

    for ((i=0; i

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 34/36

    done

    }

    pr incipal

    [h +1 ms] - Responder

    Publicidade

    Servios

    Inclua um comentrio

    Adicionar aos Favoritos

    Marcar como lido/assistido

    Incluir anotao pessoal

    +Outros

    Mais posts

    Artigo

    DevMedia Player para Android - FAQ

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 35/36

    Pocket Video

    Desvendando o IHC - Interao Homem-Computador

    Artigo

    DevMedia Player Mobile: Saiba como verificar o ID do Video

    Pocket Video

    Registro de Software - O que voc precisa saber

    Artigo

    Redes Neurais Artificiais: Algoritmo Backpropagation

    Artigo

    Fluxogramas, diagrama de blocos e de Chapin no

    desenvolvimento de algoritmos

    What is new

    Novo Selo Post TOP DevMedia

    Artigo

    Configurando o ambiente COBOL 4.5

    What is new

    Facebook - Ultrapassamos os 10 mil likes

    Artigo

    DevWare Image - Compartilhe suas imagens

    Listar mais contedo

  • 16/01/14 Introduo ao Shell Script no Linux

    www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 36/36

    Anuncie | Loja | Publique | Assine | Fale conosco

    Hospedagem web por Porta 80 Web Hosting

    Todos os Direitos Reservados a Web-03

    DevMedia

    18.735 pessoas curtiram DevMedia.

    Plug-in social do Facebook

    Curtir