SlideShare uma empresa Scribd logo
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.
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
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
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
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:
Figura 6: Visão do trecho de código inicial no terminal
Abaixo é possível ver o código quando editado pelo gedit.
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
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:
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
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:
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.
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:
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;
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:
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
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.
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
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.
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
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
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.
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
Figura 21: do código com o laço for no shell script
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
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
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
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
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:
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
done
}
gerarTabuada2()
{
for i in {1..10}; do
echo "$i*2="$i*2
done
}
principal
Figura 27: Demonstração do código fonte de um shell script com funções
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";
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

Mais conteúdo relacionado

Mais procurados

Programação em Shell Script
Programação em Shell ScriptProgramação em Shell Script
Programação em Shell Script
Reinaldo Lima
 
Curso shell
Curso shellCurso shell
Curso shell
cesarvianna
 
Curso Gratuito de Shell Script
Curso Gratuito de Shell ScriptCurso Gratuito de Shell Script
Curso Gratuito de Shell Script
Wanderlei Silva do Carmo
 
Curso gratuitoshellscript nivel-2
Curso gratuitoshellscript nivel-2Curso gratuitoshellscript nivel-2
Curso gratuitoshellscript nivel-2
Wanderlei Silva do Carmo
 
Introducao ao Shell Script
Introducao ao Shell ScriptIntroducao ao Shell Script
Introducao ao Shell Script
Hugo Maia Vieira
 
Minicurso Shell Script
Minicurso Shell ScriptMinicurso Shell Script
Minicurso Shell Script
Luís Eduardo
 
Shell Script - Luz e trevas
Shell Script - Luz e trevasShell Script - Luz e trevas
Shell Script - Luz e trevas
Osvaldo Filho
 
5423 c ou c++
5423 c ou c++5423 c ou c++
5423 c ou c++
Lucas Júnio
 
Aula1 c++ builder
Aula1   c++ builderAula1   c++ builder
Aula1 c++ builder
Daniela Sprovieri
 
Curso avançado de c++ em portugues
Curso avançado de c++ em portuguesCurso avançado de c++ em portugues
Curso avançado de c++ em portugues
Laura
 
12 aula - shell script-2015
12   aula - shell script-201512   aula - shell script-2015
12 aula - shell script-2015
Flávia Santos
 
Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)
Hugo Maia Vieira
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
Tiago
 
O compilador dev c++
O compilador dev c++O compilador dev c++
O compilador dev c++
Clausia Antoneli
 
Fpar aula5
Fpar aula5Fpar aula5
Fpar aula5
Geomar Matias Lima
 
Curso de Shell Script 06/11
Curso de Shell Script 06/11Curso de Shell Script 06/11
Curso de Shell Script 06/11
Rodrigo Silva
 
Shell script
Shell scriptShell script
Shell script
Carlos Melo
 
Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01
Leandro Rezende
 
Shell script
Shell script Shell script
Shell script
SoftD Abreu
 

Mais procurados (19)

Programação em Shell Script
Programação em Shell ScriptProgramação em Shell Script
Programação em Shell Script
 
Curso shell
Curso shellCurso shell
Curso shell
 
Curso Gratuito de Shell Script
Curso Gratuito de Shell ScriptCurso Gratuito de Shell Script
Curso Gratuito de Shell Script
 
Curso gratuitoshellscript nivel-2
Curso gratuitoshellscript nivel-2Curso gratuitoshellscript nivel-2
Curso gratuitoshellscript nivel-2
 
Introducao ao Shell Script
Introducao ao Shell ScriptIntroducao ao Shell Script
Introducao ao Shell Script
 
Minicurso Shell Script
Minicurso Shell ScriptMinicurso Shell Script
Minicurso Shell Script
 
Shell Script - Luz e trevas
Shell Script - Luz e trevasShell Script - Luz e trevas
Shell Script - Luz e trevas
 
5423 c ou c++
5423 c ou c++5423 c ou c++
5423 c ou c++
 
Aula1 c++ builder
Aula1   c++ builderAula1   c++ builder
Aula1 c++ builder
 
Curso avançado de c++ em portugues
Curso avançado de c++ em portuguesCurso avançado de c++ em portugues
Curso avançado de c++ em portugues
 
12 aula - shell script-2015
12   aula - shell script-201512   aula - shell script-2015
12 aula - shell script-2015
 
Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
 
O compilador dev c++
O compilador dev c++O compilador dev c++
O compilador dev c++
 
Fpar aula5
Fpar aula5Fpar aula5
Fpar aula5
 
Curso de Shell Script 06/11
Curso de Shell Script 06/11Curso de Shell Script 06/11
Curso de Shell Script 06/11
 
Shell script
Shell scriptShell script
Shell script
 
Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01
 
Shell script
Shell script Shell script
Shell script
 

Semelhante a Introdução ao shell script no linux

Shell script i
Shell script iShell script i
Shell script i
Carlos Melo
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
Tiago
 
Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5
Pessoal
 
shell bash Fpar aula6
shell bash Fpar aula6shell bash Fpar aula6
shell bash Fpar aula6
Geomar Matias Lima
 
Linux shell
Linux shellLinux shell
Linux shell
Frederico Madeira
 
Curso de ShellScript - Lm06 shellscript6
Curso de ShellScript - Lm06 shellscript6Curso de ShellScript - Lm06 shellscript6
Curso de ShellScript - Lm06 shellscript6
Pessoal
 
Shell script do zero aula 1 - basico do basico e primeiros comandos
Shell script do zero    aula 1 - basico do basico e primeiros comandosShell script do zero    aula 1 - basico do basico e primeiros comandos
Shell script do zero aula 1 - basico do basico e primeiros comandos
Ivan Ribeiro
 
O Que é shell - bash
O Que é shell - bashO Que é shell - bash
O Que é shell - bash
Sérgio Silva
 
Curso De Shell Aula 1
Curso De Shell   Aula 1Curso De Shell   Aula 1
Curso De Shell Aula 1
Felipe Santos
 
Unidade 3.6 Introdução ao Shell
Unidade 3.6 Introdução ao ShellUnidade 3.6 Introdução ao Shell
Unidade 3.6 Introdução ao Shell
Juan Carlos Lamarão
 
Ms dos comandos
Ms dos comandosMs dos comandos
Ms dos comandos
Wagner Kinera
 
Shell script
Shell scriptShell script
Shell script
Kleber Monte
 
Lpi+102
Lpi+102Lpi+102
Lpi+102
Marc Meyer
 
Introdução à Shell Script - Vinícius Alves Hax
Introdução à Shell Script - Vinícius Alves HaxIntrodução à Shell Script - Vinícius Alves Hax
Introdução à Shell Script - Vinícius Alves Hax
Tchelinux
 
Curso de ShellScript - Lm01 shellscript
Curso de ShellScript - Lm01 shellscriptCurso de ShellScript - Lm01 shellscript
Curso de ShellScript - Lm01 shellscript
Pessoal
 
Introdução ao Linux
Introdução ao LinuxIntrodução ao Linux
Introdução ao Linux
TzveDyor
 
Aula 11 semana
Aula 11 semanaAula 11 semana
Aula 11 semana
Jorge Ávila Miranda
 
Tutorial Programando C no Linux
Tutorial Programando C no LinuxTutorial Programando C no Linux
Tutorial Programando C no Linux
Joao Gonçalves
 
Trabalhando na Linha de comando
Trabalhando na  Linha de comandoTrabalhando na  Linha de comando
Trabalhando na Linha de comando
SoftD Abreu
 
Lista de exercícios em Bash (resolvida)
Lista de exercícios em Bash (resolvida) Lista de exercícios em Bash (resolvida)
Lista de exercícios em Bash (resolvida)
Marcelo Barros de Almeida
 

Semelhante a Introdução ao shell script no linux (20)

Shell script i
Shell script iShell script i
Shell script i
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
 
Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5Curso de ShellScript - Lm05 shellscript5
Curso de ShellScript - Lm05 shellscript5
 
shell bash Fpar aula6
shell bash Fpar aula6shell bash Fpar aula6
shell bash Fpar aula6
 
Linux shell
Linux shellLinux shell
Linux shell
 
Curso de ShellScript - Lm06 shellscript6
Curso de ShellScript - Lm06 shellscript6Curso de ShellScript - Lm06 shellscript6
Curso de ShellScript - Lm06 shellscript6
 
Shell script do zero aula 1 - basico do basico e primeiros comandos
Shell script do zero    aula 1 - basico do basico e primeiros comandosShell script do zero    aula 1 - basico do basico e primeiros comandos
Shell script do zero aula 1 - basico do basico e primeiros comandos
 
O Que é shell - bash
O Que é shell - bashO Que é shell - bash
O Que é shell - bash
 
Curso De Shell Aula 1
Curso De Shell   Aula 1Curso De Shell   Aula 1
Curso De Shell Aula 1
 
Unidade 3.6 Introdução ao Shell
Unidade 3.6 Introdução ao ShellUnidade 3.6 Introdução ao Shell
Unidade 3.6 Introdução ao Shell
 
Ms dos comandos
Ms dos comandosMs dos comandos
Ms dos comandos
 
Shell script
Shell scriptShell script
Shell script
 
Lpi+102
Lpi+102Lpi+102
Lpi+102
 
Introdução à Shell Script - Vinícius Alves Hax
Introdução à Shell Script - Vinícius Alves HaxIntrodução à Shell Script - Vinícius Alves Hax
Introdução à Shell Script - Vinícius Alves Hax
 
Curso de ShellScript - Lm01 shellscript
Curso de ShellScript - Lm01 shellscriptCurso de ShellScript - Lm01 shellscript
Curso de ShellScript - Lm01 shellscript
 
Introdução ao Linux
Introdução ao LinuxIntrodução ao Linux
Introdução ao Linux
 
Aula 11 semana
Aula 11 semanaAula 11 semana
Aula 11 semana
 
Tutorial Programando C no Linux
Tutorial Programando C no LinuxTutorial Programando C no Linux
Tutorial Programando C no Linux
 
Trabalhando na Linha de comando
Trabalhando na  Linha de comandoTrabalhando na  Linha de comando
Trabalhando na Linha de comando
 
Lista de exercícios em Bash (resolvida)
Lista de exercícios em Bash (resolvida) Lista de exercícios em Bash (resolvida)
Lista de exercícios em Bash (resolvida)
 

Introdução ao shell script no linux

  • 1. 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.
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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:
  • 6. Figura 6: Visão do trecho de código inicial no terminal Abaixo é possível ver o código quando editado pelo gedit.
  • 7. 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
  • 8. 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:
  • 9. 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
  • 10. 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:
  • 11. 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. 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
  • 12. 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:
  • 13. 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;
  • 14. 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:
  • 15. 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
  • 16. 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.
  • 17. 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
  • 18. 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.
  • 19. 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 echo "Você digitou o numero 5" else echo “Você não digitou nenhum número aceito” fi
  • 20. 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
  • 21. 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
  • 22. Figura 21: do código com o laço for no shell script
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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:
  • 28. 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 done
  • 29. } gerarTabuada2() { for i in {1..10}; do echo "$i*2="$i*2 done } principal Figura 27: Demonstração do código fonte de um shell script com funções
  • 30. 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";
  • 31. 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