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
Gostei (5)
15
Curtir
24
(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 ar 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 os: 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 ou 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 ado 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
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 : melhora na interface de istraçã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