introdução ao shell script no linux

31
Muitas vezes é necessário 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 situação e aliviar ações repetitivas podemos utilizar o shell Scripts. De maneira grosseira um Shell Scritp nada mais é que uma sequência de comandos do próprio Linux que são executados em uma determinada sequência para um determinado fim. Para criar um shell script é necessário seguir alguns passos: 1.1. Crie um arquivo No terminal ou modo gráfico crie um arquivo que possa ser editado para que se torne o primeiro shell script a ser criado.

Upload: paulo-damas

Post on 24-May-2015

126 views

Category:

Internet


8 download

DESCRIPTION

Shell Script

TRANSCRIPT

Page 1: Introdução ao shell script no linux

Muitas vezes é necessário 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 situação e aliviar ações

repetitivas podemos utilizar o shell Scripts.

De maneira grosseira um Shell Scritp nada mais é que uma sequência de comandos do

próprio Linux que são executados em uma determinada sequência para um

determinado fim.

Para criar um shell script é necessário seguir alguns passos:

1.1. Crie um arquivo

No terminal ou modo gráfico crie um arquivo que possa ser editado para que se torne o

primeiro shell script a ser criado.

Page 2: Introdução ao shell script no linux

Exemplo:

Listagem 1: Criação do shell1.sh

touch shell1.sh

Figura 1: Criação do arquivo shell1.sh

Onde:

touch - Comando utilizado para criar um arquivo vazio.

1.2. Dê direito de execução para o arquivo criado

Para que seja possível executar o shell script é preciso atribuir ao mesmo o direito de

execução, para isso é necessário usar o comando chmod com a opção +x.

Exemplo:

Listagem 2: Adição do direito de execução ao arquivo shell1.sh

chmod +x shel11.sh

Page 3: Introdução ao shell script no linux

Figura 2: Atribuindo direito de execução ao arquivo shell1.sh

Antes de atribuir o direito de execução, o arquivo era visto pelo terminal da cor padrão

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

Figura 3: Visão do arquivo shell1.sh antes da atribuição do direito de execução para o

Page 4: Introdução ao shell script no linux

arquivo shell1.sh

Abaixo é possível ver a imagem após execução do chmod.

Figura 4: Visualização do arquivo shell1.sh após a atribuição do direito de execução

para o mesmo

1.3. Abra o arquivo recém criado para editá-lo

Neste artigo foi utilizado o editor de texto vim que pode ser acessado através terminal,

porém fica a critério do leitor utilizar qualquer editor gráfico como gedit para alterar o

arquivo recém criado.

Exemplo:

Listagem 3: Abertura do arquivo shell1.sh para edição

vim shell1.sh

Page 5: Introdução ao shell script no linux

Figura 5: Figura demonstrando a sintaxe do comando vim para edição 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:

Listagem 4: Visão da primeira linha shell script

#!/bin/bash

Código visto no vim:

Page 6: Introdução ao shell script no linux

Figura 6: Visão do trecho de código inicial no terminal

Abaixo é possível ver o código quando editado pelo gedit.

Page 7: Introdução ao shell script no linux

Figura 7: Visão do código do shell script através do gedit

Esta linha especifica qual shell será responsável por executar o shell scritp que será

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

Após a linha que contém o código refrente ao tipo de shell é possível inserir os

comandos desejados.

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

a mesma será fechada. O código pode ser visto abaixo:

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

#!/bin/bash

echo "Abrindo gaveta..."

eject

sleep 1

Page 8: Introdução ao shell script no linux

echo "A gaveta será fechada..."

sleep 1

eject -t

Figura 8: Figura com o conteúdo do shell script shell1.sh

Onde:

echo - Comando responsável por exibir uma mensagem na tela.

eject - Comando responsável por fazer a baia do leitor de cd ejectar.

eject -t - Comando reponsável 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 Inserão de comentários

Os comentários são de suma importância para deixar informações para manipulação

futura do shell script. Para inserir um comentário em códigos de shell script basta

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

Page 9: Introdução ao shell script no linux

Sintaxe: #comentário

Onde:

comentário – Comentário em si.

Exemplo:

Listagem 6: Shell Script com comentário

#!/bin/bash

#Eu sou um comentário.

echo “Existe um comentário neste shell script”

Figura 10: Figura que demonstra a execução do shell1.sh

Caso o shell1.sh esteja em diretório diferente do qual você se localiza, execute shell

script da seguinte maneira:

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

Page 10: Introdução ao shell script no linux

Onde:

/.../diretorio - diretório no qual o shell está localizado.

Exemplo: /tmp/maguscode/shel1.sh

Figura 11: Execução do shell1.sh a partir de um diretório diferente

A utilização de variáveis em shellscript é muito importante como em qualquer

linguagem de programação. Para criar uma variável em shell script é bem simples,

basta seguir a sintaxe abaixo:

Sintaxe: nome_variável=VALOR

Onde:

nome_variavel – Nome da variável.

VALOR – Valor atribuído a variável criada.

Exemplos:

Page 11: Introdução ao shell script no linux

Neste exemplo foram criadas as variáveis “cor_casa” que tem como atributo o valor

“verde”, e a variável “numero” que tem como atributo o valor 32.

Listagem 7: Criação de variável

cor_casa=verdenumero=32

Para se utilizar a variável basta utilizar o $ (Cifrão) na frente do nome da variável,

como pode ser visto no código do shell script baixo.

Listagem 8: Exemplo de shell script que exibe conteúdo da variável na tela

#!/bin/bashcor_casa=VERDEecho “A cor da casa é $cor_casa”exit

A saída será: A cor da casa é VERDE

2.1 Utilizando saída de comando como valor de variável

Para direcionar a saída de um determinado comando para uma variável, basta escolher

uma das seguintes sintaxes:

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

Onde:

nome_variavel – Nome da variável que receberá a saída do comando.

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 diretório tem.

Listagem 9: Script shell que conta o total de arquivos em um diretório

#!/bin/bash

Page 12: Introdução ao shell script no linux

total_linhas=$(ls | wc -l)

echo “Existe $total_linhas neste diretório.”

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

diretório.

Figura 12: Demonstração do total de arquivos do diretório /tmp

Saída do script executado:

Page 13: Introdução ao shell script no linux

Figura 13: Saída da execução do shell script total.sh

Figura 13: Saída da execução do shell script total.sh

2.2 Capturar valores do teclado

Uma maneira de capturar o que um determinado usuário digita é atravez do comando

read.

Sintaxe: read $variavel;

Onde:

$variavel – Nome da variável que recebera o valor do teclado.

Será feito shell script chamado qualnome.sh no qual o usuário digita um nome e o

mesmo é exibido na tela.

Listagem 10: Exemplo utilizando captura do valor da variável através do teclado

#!/bin/bash

echo Qual seu nome: read nome;

Page 14: Introdução ao shell script no linux

echo “Bem vindo $nome”

exit

Figura 14: Nome do usuário digitado durante a execução do shellscript

3.1 Comando if

O comando if é um comando para tomada de decisão. O mesmo realiza uma

determinada ação quando um requisito é atendido.

Sintaxe:

if [ condição ]; then

ação

fi

Onde:

Page 15: Introdução ao shell script no linux

condição - Condição para continuar no laço

ação - Comandos ou comportamentos que serão executados dentro do laço

Será criado um exemplo no qual o usuário digitará um valor na tela e só sera exibida

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

Listagem 11: Utilização 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

Page 16: Introdução ao shell script no linux

Figura 15: Demonstração do código com o comando condicional if no shell script

Figura 16: Demonstração da saida do shell script que contém um comando condicional

if

3.1 Comando if/else

O comando if/else é um comando para tomada de decisão. O if faz com que uma

determinada ação seja executada quando um requisito é atendido, caso contratrio será

utilizado o que estiver no bloco do comando else.

Sintaxe:

if [ condição ]; then

ação

fi

Onde:

condição - Condição para continuar no laço

ação - Comandos ou comportamento que será executado dentro do laço.

Será criado um exemplo no qual o usuário digitará um valor na tela e só será exibida

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

Page 17: Introdução ao shell script no linux

Listagem 12: Utilização 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

Figura 17: Demonstração do código com o comando condicional if no shell script

Page 18: Introdução ao shell script no linux

Figura 18: Demonstração da saída do shell script que contém um comando condicional

if

3.3. Comando elif

O comando elif é um comando para tomada de decisão. O comando elif depende do

comando if e o mesmo funciona de maneira similar ao else/if, porém o elfi também tem

uma condição, que será executada caso um condição seja tendida.

Sintaxe:

if [ condição ]; then

ação

elif [condição]; then

ação

elif [condição]; then

ação

fi

Onde:

condição - Condição para continuar no laço

ação - Comandos ou comportamento que será executado dentro do laço.

Page 19: Introdução ao shell script no linux

Será criado um exemplo no qual o usuário 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: Utilização 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” ]; thenecho "Você digitou o numero 4"

elif [ “$valor_digitado” -eq “5” ]; thenecho "Você digitou o numero 5"

else echo “Você não digitou nenhum número aceito”

fi

Page 20: Introdução ao shell script no linux

Figura 19: Demonstração do código com o comando condicional elif no shell script

Figura 20: Demonstração da saida do shell script que contém um comando condicional

elif

3.4. Comando case

Page 21: Introdução ao shell script no linux

O comando case, assim como o if, é um comando para tomada de decisão.

Sintaxe:

case variavel in

opcao1) acao1

;;

opcao2)

acao2

;;

opacaoN)

acaoN

;;

esac

Onde:

variavel – Variável que será verificada.

opcao1/2/N – Possíveis estados da variavel.

acao1/2/N – Ação a ser tomada quando a opção 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

Page 22: Introdução ao shell script no linux

Figura 21: do código com o laço for no shell script

Page 23: Introdução ao shell script no linux

Figura 22: Demonstração da saida do shell script que contém um laço while

4.1 Laço for

O laço for é uma executa uma ação repetitivamente até que uma condição seja

atendida.

Sintaxe:

for contador in limite_contador;

do

acao

Page 24: Introdução ao shell script no linux

done

Onde:

contador - Variável que será utilizada no laço for.

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

atingido o laço terminará.

ação - Comandos ou comportamento que será executado dentro do laço.

Para exemplo o laço será criado um shellscript simples que exibi na tela uma

mensagem 4 vezes.

Listagem 15: Utilização do laço for

#!/bin/bash

limite_contador=4

for contador in {1..4};

do

echo "Messagem exibida $contador vez".

sleep 1;

done

Page 25: Introdução ao shell script no linux

Figura 23: Demonstração do código com o laçofor no shell script

Figura 24: Demonstração da saída do shell script que contém um laço while

4.2 Laço while

Page 26: Introdução ao shell script no linux

O while é um tipo de laço que existe em várias linguagens de programação. O mesmo

executa uma ação enquanto um requisito não é atendido.

Sintaxe:

while [ condicao ]

do

acao

done

Onde:

condicao - Condição para continuar no laço

ação - Comandos ou comportamento que será executado dentro do laço.

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

vezes.

Listagem 16: Utilização do laço while

#!/bin/bash

contador=1

while [ $contador -ne 4 ];

doecho "Messagem exibida $contador vez".sleep 1;((contador=$contador+1))

done

Page 27: Introdução ao shell script no linux

Figura 26: Demonstração da saída do shell script que contém um laço while

Assim como em qualquer "linguagem de programação" o shell script proporciona a

utilização de funções.

Sintaxe:

nome_funcao ()

{

funcao_2;;

}

nome_funcao_2 ()

{

acao

}

nome_funcao

Onde:

Page 28: Introdução ao shell script no linux

nome_funcao – Funcão criada.

acao – Ação a ser tomada.

nome_funcao_2;; - Chamada da função nome_funcao_2.

nome_funcao – Função que dará inico ao shell script.

Será criado um shell script para no qual é possível escolher se será feito uma tabuada

do 2 ou do 3 sendo que cada uma é feita por uma função.

Listagem 17: Utilização de funções

#!/bin/bash

principal(){escolha=-1while [ $escolha -ne 0 ];do

echo "Escolha uma opção"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*3done

Page 29: Introdução ao shell script no linux

}

gerarTabuada2(){

for i in {1..10}; do echo "$i*2="$i*2done

}

principal

Figura 27: Demonstração do código fonte de um shell script com funções

Page 30: Introdução ao shell script no linux

Figura 28: Demonstração da saida do shell script com funções

Como foi possível ver ao longo do artigo, a criação de shell script pode vir a ser muito

útil para usuários de Linux, seja para pequenas funções que são feitas repetidamente

todo os dias ou funções mais complexas.

Flavio Moraes

Seu último script não funciona. A correção que fiz foi testada em várias distribuições e está

funcionando. A correção é essa:

#!/bin/bash

principal()

{

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";

Page 31: Introdução ao shell script no linux

echo -n ": ";

read escolha;

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

then

gerarTabuada2

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

then

gerarTabuada3

fi

done

}

gerarTabuada3()

{

for ((i=0; i<11; i++))

do

echo "$i*3=" `expr $i \* 3`

done

}

gerarTabuada2()

{

for i in {1..10}; do

echo "$i*2=" `expr $i \* 2`

done

}

principal