Introdução ao Shell Script no Linux
-
Upload
renato-costa -
Category
Documents
-
view
43 -
download
0
Transcript of Introdução ao Shell Script no Linux
-
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