Sei sulla pagina 1di 37

18/3/2014 Introdução ao Shell Script no Linux

Buscar

post favorito comentários

Introdução ao Shell Script no


Linux
Veja neste artigo como criar e utilizar Shell Scripts no
sistema operacional Linux. Serão apresentados os
principais conceitos e a sintaxe básica da linguagem
utilizada para este fim.

23 15 Curtir 24

Gostei (5) (1)

Introdução

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 1/37
18/3/2014 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.

1. Criando um shell script


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.

Exemplo:

Listagem 1: Criação do shell1.sh

touch shell1.sh

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 2/37
18/3/2014 Introdução ao Shell Script no Linux

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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 3/37
18/3/2014 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.

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 4/37
18/3/2014 Introdução ao Shell Script no Linux

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


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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 5/37
18/3/2014 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:

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 6/37
18/3/2014 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.

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 7/37
18/3/2014 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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 8/37
18/3/2014 Introdução ao Shell Script no Linux

sleep 1

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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 9/37
18/3/2014 Introdução ao Shell Script no Linux

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:

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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 10/37
18/3/2014 Introdução ao Shell Script no Linux

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

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

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

2. Utilizando Váriaveis
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:
http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 11/37
18/3/2014 Introdução ao Shell Script no Linux

nome_variavel – Nome da variável.


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

Exemplos:

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=verde
numero=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/bash
cor_casa=VERDE
echo “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.


http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 12/37
18/3/2014 Introdução ao Shell Script no Linux

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
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:

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 13/37
18/3/2014 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:

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 14/37
18/3/2014 Introdução ao Shell Script no Linux

read nome;

echo “Bem vindo $nome”

exit

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

3. Tomada decisão
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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 15/37
18/3/2014 Introdução ao Shell Script no Linux

Onde:

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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 16/37
18/3/2014 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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 17/37
18/3/2014 Introdução ao Shell Script no Linux

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.

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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 18/37
18/3/2014 Introdução ao Shell Script no Linux

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

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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 19/37
18/3/2014 Introdução ao Shell Script no Linux

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.

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” ]; then


echo "Você digitou o numero 4"

elif [ “$valor_digitado” -eq “5” ]; then

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 20/37
18/3/2014 Introdução ao Shell Script no Linux

echo "Você digitou o numero 5"

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

fi

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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 21/37
18/3/2014 Introdução ao Shell Script no Linux

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

3.4. Comando case

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.


http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 22/37
18/3/2014 Introdução ao Shell Script no Linux

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

DEV MEDIA LOGIN

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 23/37
18/3/2014 Introdução ao Shell Script no Linux

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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 24/37
18/3/2014 Introdução ao Shell Script no Linux

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

4. Laços condicionais
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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 25/37
18/3/2014 Introdução ao Shell Script no Linux

acao
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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 26/37
18/3/2014 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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 27/37
18/3/2014 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 ];

do
echo "Messagem exibida $contador vez".
sleep 1;
((contador=$contador+1))
done

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 28/37
18/3/2014 Introdução ao Shell Script no Linux

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

5. Funçoes
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:

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 29/37
18/3/2014 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=-1
while [ $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*3

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 30/37
18/3/2014 Introdução ao Shell Script no Linux

done

gerarTabuada2()
{

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

principal

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 31/37
18/3/2014 Introdução ao Shell Script no Linux

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

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 32/37
18/3/2014 Introdução ao Shell Script no Linux

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

Conclusão
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.

Robson Fernando Gomes

Programador Java. Cursando o ultimo ano de Ciência da computação da Faculdade Salesiana do Estado
São Paulo no campos de Lorena - SP.

O que você achou deste post?

Gostei (5) (1)

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 33/37
18/3/2014 Introdução ao Shell Script no Linux

Poste seu comentário

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

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`

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 34/37
18/3/2014 Introdução ao Shell Script no Linux

done
}

principal

[há +1 mês] - Responder

Publicidade

Serviços

Inclua um comentário

Adicionar aos Favoritos

Marcar como lido/assistido

Incluir anotação pessoal

+Outros

Mais posts
Artigo

Django Admin: melhora na interface de administração

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 35/37
18/3/2014 Introdução ao Shell Script no Linux

Pocket Video

Analisando dados de redes sociais

Artigo

DevMedia Player para Android - FAQ

Pocket Video

Desvendando o IHC - Interação 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

Listar mais conteúdo

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 36/37
18/3/2014 Introdução ao Shell Script no Linux

Anuncie | Loja | Publique | Assine | Fale conosco

DevMedia
Curtir

21.199 pessoas curtiram DevMedia.

Plug-in social do Facebook

Hospedagem web por Porta 80 Web Hosting

Todos os Direitos Reservados a Web-03

http://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 37/37

Potrebbero piacerti anche