Sunteți pe pagina 1din 23

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

NOVO!

favorito (23)

imprimir

anotar

Login

Baixe o APP

marcar como lido

Cursos #ShowMeTheCode

tirar dvidas

Introduo ao Shell Script no


Linux
Veja neste artigo como criar cdigos para automatizao de tarefas
rotineiras utilizando o interpretador de comandos bash em sistemas
Unix-like. Sero dados os conceitos bsicos e as sintaxes e explicaes
dos principais comandos.

DevMedia
Curtir Pgina

Publique | Assine | Fale conosco | Trabalhe conosco

120 mil curtidas

Seja o primeiro de seus amigos a curtir isso.

Hospedagem web por Porta 80 Web Hosting

1 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Login

Baixe o APP

Lembre-se de executar os comandos como usurio comum e no como


root, visto que, como root tudo ser aceito e, dependendo do que voc zer, isto
pode gerar danos ao sistema operacional. Uma maneira fcil de vericar abrir o
terminal e se o smbolo antes do cursor o '$', voc est como usurio comum, mas
se o '#', voc est como root. Para sair do modo root, digite:

exit

Criao do shell script


Em primeiro lugar precisaremos de um arquivo para escrever o nosso script.
Podemos fazer isso via terminal ou via modo grco, sendo que, no ltimo caso,
basta apenas clicar com o boto direito do mouse em um diretrio desejado e
escolher 'criar novo arquivo de texto' ou 'criar novo documento'.
Para criar um arquivo via terminal, basta abrir o mesmo e digitar:

vi exemplo1.sh

Tambm podemos fazer:

touch exemplo1.sh

O comando vi cria e abre um arquivo para leitura/escrita no terminal, enquanto o


comando touch cria um arquivo, mas no o abre. Posteriormente possvel abri-lo
com um editor de sua preferncia.

Concedendo permisses ao arquivo


Para editar o arquivo, precisamos dar permisso de escrita a ele.

2 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Baixe o APP

Login

pressionar ESC para edit-lo, assim, ao se fazer isso, o caractere ':' aparece, ento
digite:

!chmod 777 %

Para a segunda alternativa, em que o touch no abriu o arquivo criado, basta


digitar:

chmod 777 exemplo1.sh

O chmod utilizado para setar permisses em arquivos e diretrios. O valor 777


concede todos os direitos (read, write, execute) para o usurio, o grupo e os outros.
Ao invs de 777, outro modo de fazer isso digitando +rwx.
O caractere '!' fora o vi a executar o que est sendo pedido (no caso, executar o
chmod).
O caractere '%' faz referncia ao arquivo atual. Pode-se tambm, ao invs de
utiliz-lo, fornecer o nome do arquivo.

Edio e execuo do arquivo


Neste artigo utilizaremos o vi, no terminal, mas voc pode escolher qualquer outro
editor, grco ou no.
Abra o arquivo com o comando:

vi exemplo1.sh

Com o vi voc precisa digitar 'i' para coloc-lo no modo de insero.


Um shell script comea (mas no necessariamente) denindo qual o interpretador
de comandos que ser utilizado para interpretar e executar o script. Existem outros

3 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Baixe o APP

Login

#!/bin/SHELL_ATUAL

Figura 1. Execuo do cdigo bash


Como vemos na Figura 1, a primeira linha de um shell script dene qual o
interpretador de comandos ser utilizado.
Note que utilizamos o path completo de onde se encontra o shell, no caso, no
diretrio /bin/.
Aps isso, hora de iniciarmos o nosso script. Para este artigo, o exemplo imprimir
na tela algumas informaes sobre o usurio e o computador, conforme o cdigo da
Listagem 1.
Listagem 1. Cdigo do exemplo1.sh

#!/bin/bash
echo "Seu nome de usurio :"
whoami
echo "Info de hora atual e tempo que o computador est ligado:"
uptime
echo "O script est executando do diretrio:"
pwd

Este cdigo nos fornece algumas informaes sobre o usurio, algumas informaes
da mquina e sobre o local de armazenamento do nosso script.
Para salvarmos o arquivo digitamos ESC e depois :wq para gravar as alteraes e
sair.
Para executar o script, h dois pontos a considerar:

4 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Login

Baixe o APP

no prompt:
./exemplo1.sh

2. Se voc tiver salvo o seu arquivo em outro diretrio qualquer, voc precisar
informar o path completo at ele. Considerando que ele esteja em /tmp/scripts:
/tmp/scripts/exemplo1.sh

O comando echo exibe na tela a string entre aspas duplas. Caso voc no
queira que ela que entre aspas duplas, simplesmente no as fornea no
comando echo;
O comando whoami exibe o usurio logado no sistema;
O comando uptime exibe a hora atual, o tempo decorrido desde que o
computador foi ligado, o nmero de usurios logados e uma mdia do nmero
de processos carregados nos ltimos um, cinco e 15 minutos;
O comando pwd exibe o diretrio no qual o arquivo est rodando.
Toda string que contiver espaos deve estar entre aspas duplas.

Inserindo comentrios
Comentrios em cdigos so muito importantes. Explicar o que est sendo feito e
dar informaes sobre o funcionamento do cdigo permite ao desenvolvedor
economizar tempo para entend-lo.
Para inserir comentrios no seu script, basta iniciar a linha com o caractere '#',
como no cdigo da Listagem 2 e execuo na Figura 2.
Listagem 2. Shell script com comentrios.

#!/bin/bash
#Este um comentrio
#Este outro comentrio
echo "Este script contm comentrios."

5 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Login

Baixe o APP

Figura 2. Sada da execuo do cdigo da Listagem 2.


Como pode ser observado, os comentrios no so processados, portanto, no
aparecem para o usurio.

Declarando e utilizando variveis


Uma varivel um label (nome) que armazena um valor para ser utilizado
posteriormente no cdigo. Seu uso evita repeties de valores por parte do
programador e torna o cdigo mais informativo e limpo.
A linguagem do shell no tipada, ou seja, pode-se armazenar qualquer tipo de
valor em uma varivel, desde strings a nmeros.
Para declar-las basta seguir a sintaxe:

nome_da_variavel=valor

onde:
nome_da_variavel: sequncia de caracteres que deve comear por qualquer
letra maiscula ou minscula ou underscore (_);
valor: qualquer dado que deva ser valorado varivel.
Nota: Observe que no deve haver espaos entre o sinal de igual e o nome e o
valor da varivel.
Para utilizarmos o valor da varivel coloca-se o $ (cifro) na frente de seu nome,
como mostra o exemplo da Listagem 3.
Listagem 3. Declarando e utilizando variveis.

6 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

http://www.devmedia.com.br/introducao-ao-shell...

CDIGOS
ASSINE MVP
site=www.devmedia.com.br

Login

Baixe o APP

meu_numero_favorito=13
_cidade=Porto Alegre
echo Um timo site para voc aprender a programar e se manter atualizado : $site
echo Meu nmero favorito : $meu_numero_favorito
echo Minha cidade natal : $_cidade

Agora, se voc deseja printar o nome da prpria varivel, basta colocar uma barra
invertida '\' antes do $, assim, ela nega o caractere seguinte e normalmente
utilizada para caracteres de scape (ou seja, caracteres que j tem uma funo
especca, mas que voc deseja somente utilizar em um nome ou valor, sem
execut-los). Vejamos um exemplo na Listagem 4.
Listagem 4. Printando o nome de uma varivel ao invs de seu contedo.

#!/bin/bash
nome=fernanda
echo O nome da varivel \$nome

Atribuindo sadas de comandos a variveis


possvel armazenar o resultado de um comando em uma varivel. Isso muito til
em situaes em que se usar este resultado em mais de um lugar ao longo do
script.
H duas sintaxes para isso:
1. nome_da_variavel=$(comando)
2. nome_da_variavel=`comando`
Voc pode escolher a que melhor lhe agrada ou empregar as duas nos seus scripts.
O prximo exemplo lista as informaes relativas a todos os discos e parties do
sistema:

7 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Baixe o APP

Login

echo $system_info

Veja que o comando df-h executar e a sua sada (resultado dessa execuo) ser
armazenada na varivel system_info.

Capturando a entrada de dados do usurio


Pode ser que o seu script precise interagir com o usurio, pedindo para ele fornecer
algum dado de entrada para processamento. Neste caso, necessrio que se leia o
que o usurio digitou e isso feito atravs do seguinte comando:

read nome_da_variavel_para_armazenar_o_valor_a_ser_lido

Vejamos o exemplo da Listagem 5.


Listagem 5. Utilizando o comando read para ler entrada do usurio.

#!/bin/bash
echo Qual o nome de uma de suas msicas favoritas?
read nome_musica;
echo Voc gosta de ouvir $nome_musica!

Comandos de seleo ou de tomada de deciso


Na maioria das vezes precisamos seguir um determinado uxo de execuo
baseado em alguma deciso tomada pelo usurio ou outro sistema que esteja
utilizando o nosso. O comando mais simples que permite isso o condicional, que
tem a seguinte sintaxe:

if [ CONDICAO ];
then
AES
Fi

8 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Login

Baixe o APP

CONDICAO: teste que, se verdadeiro, passar o controle para o bloco dentro do


then;
AES: comandos a serem executados se o resultado de CONDICAO for
verdadeiro.
Nota: muito comum o desenvolvedor esquecer de fechar o if. Lembre-se sempre
que, para cada if aberto, voc precisa fech-lo com o .
Nota: Lembre-se que, se utilizar o '[', voc deve fech-lo com o ']', e deixando
sempre espaos ao redor. Isso muito importante, pois eles so um atalho para o
comando 'test'. Isso signica que, alternativamente, voc poderia querer no utilizar
os colchetes:

if test CONDICAO;
then
AES
Fi

Mas normalmente se utiliza os colchetes por ser mais compacto e para car mais
semelhante ao formato em outras linguagens. De qualquer forma, a escolha sua.
Nota: Em outras linguagens de programao o if testa uma condio, mas em shell
script o if testa a sada de um comando.
Vamos a um exemplo em que o usurio dever digitar um nmero e vericaremos
se ele est em um determinado intervalo, como mostra a Listagem 6.
Listagem 6. Utilizando o condicional if...then

#!/bin/bash
echo Digite um nmero qualquer:
read numero;
if [ $numero -gt 20 ];
then
echo Este nmero maior que 20!

9 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Baixe o APP

Login

Veja a seguir os parmetros mais comuns utilizados com o comando test:


n string1: o comprimento de string1 diferente de 0;
z string1: o comprimento de string1 zero;
string1 = string2: string1 e string2 so idnticas;
string1 != string2: string1 e string2 so diferentes;
inteiro1 -eq inteiro2: inteiro1 possui o mesmo valor que inteiro2;
inteiro1 -ne inteiro2: inteiro1 no possui o mesmo valor que inteiro2;
inteiro1 -gt inteiro2: inteiro1 maior que inteiro2;
inteiro1 -ge inteiro2: inteiro1 maior ou igual a inteiro2;
inteiro1 -lt inteiro2: inteiro1 menor que inteiro2;
inteiro1 -le inteiro2: inteiro1 menor ou igual a inteiro2;
e nome_do_arquivo: verica se nome_do_arquivo existe;
d nome_do_arquivo: verica se nome_do_arquivo um diretrio;
f nome_do_arquivo: verica se nome_do_arquivo um arquivo regular (texto,
imagem, programa, docs, planilhas).

O comando else
Existe a possibilidade de tambm tratar o caso em que o nosso teste falha. Para isso
temos o comando else, cuja sintaxe :

if [ CONDICAO ];
then
AES_1
else
AES_2
fi

Onde:
CONDICAO: teste que, se verdadeiro, passar o controle para o bloco dentro do

10 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Login

Baixe o APP

AES_1: comandos a serem executados se o resultado de CONDICAO for


verdadeiro;
AES_2: comandos a serem executados se o resultado de CONDICAO for
falso.
Vejamos um exemplo na Listagem 7 que verica se um nmero digitado pelo
usurio positivo ou negativo.
Listagem 7. Utilizando o condicional if...then...else.

#!/bin/bash
echo Digite um nmero qualquer:
read numero;
if [ $numero -ge 0 ];
then
echo O nmero $numero positivo!
else
echo O nmero $numero negativo!
fi

O comando elif
H casos em que temos mais de uma condio a ser testada, todas correlacionadas.
Para isso temos o comando elif, cuja sintaxe :

if [ CONDICAO_1 ];
then
AES_1
elif [ CONDICAO_2 ];
then
AES_2
elif [ CONDICAO_3 ];
then
AES_3
.
.
.
.
elif [ CONDICAO_N ];

11 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Login

Baixe o APP

Fi

Onde:
CONDICAO_1 CONDICAO_N: teste que, se verdadeiro, passar o controle
para o bloco dentro do respectivo then;
AES_1 AES_N: comandos a serem executados se os resultados de
CONDICAO_1 CONDICAO_N forem verdadeiros.
A seguir temos um exemplo que apresenta um menu para o usurio escolher uma
opo. Baseado nesta escolha, a hora e a data sero exibidas; uma diviso ser
efetuada e seu resultado ser exibido, e uma mensagem ser exibida com o nome
que o usurio fornecer, como mostra a Listagem 8.
Listagem 8. Utilizando o comando elif.

#!/bin/bash
echo "Selecione uma opo:"
echo "1 - Exibir data e hora do sistema"
echo "2 - Exibir o resultado da diviso 10/2"
echo "3 - Exibir uma mensagem
read opcao;
if [ $opcao == "1" ];
then
data=$(date +"%T, %d/%m/%y, %A")
echo "$data"
elif [ $opcao == "2" ];
then
result=$((10/2))
echo "divisao de 10/2 = $result"
elif [ $opcao == "3" ];
then
echo "Informe o seu nome:"
read nome;
echo "Bem-vindo ao mundo do shell script, $nome!"
fi

Nota: O bash no tem suporte nativo a divises em ponto utuante, apenas


divises inteiras. Caso queira efetuar este tipo de operao, precisar de um

12 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Baixe o APP

Login

Nota: Observe a linha:

result=$((10/2))

Veja que utilizamos dois conjuntos de parnteses para encapsular a operao de


diviso. Em shell script precisamos realizar operaes matemticas entre
parnteses.

O comando case
O comando case tem a mesma funcionalidade do if...then...elif, com a diferena de
sua sintaxe ser mais compacta e enxuta:

case VARIAVEL in
CASO_1)
AES_1
;;
CASO_2)
AES_2
;;
CASO_N)
AES_N
;;
esac

Onde:
VARIAVEL: varivel que ter seu valor vericado;
CASO_1 CASO_N: possveis estados da varivel;
AES_1 AES_N: aes a serem tomadas caso a varivel combine com
CASO_1 CASO_N, respectivamente.
Por exemplo, modicando o exemplo anterior temos o cdigo da Listagem 9.
Listagem 9. Utilizando o comando case.

13 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Baixe o APP

Login

echo "1 - Exibir data e hora do sistema"


echo "2 - Exibir o resultado da diviso 10/2"
echo "3 - Exibir uma mensagem
read opcao;
case $opcao in
1)
data=$(date +"%T, %d/%m/%y, %A")
echo "$data"
;;
2)
result=$((10/2))
echo "divisao de 10/2 = $result"
;;
3)
echo "Informe o seu nome:"
read nome;
echo "Bem-vindo ao mundo do shell script, $nome!"
;;
esac

LOOPS Condicionais
Loops so muito teis para car iterando sobre determinadas aes at que uma
condio seja satisfeita e interrompa o lao.
O primeiro deles o for, cuja sintaxe :

for VARIAVEL in VALOR_1, VALOR_2 VALOR_N;


do
AES
done

Onde:
VARIAVEL: varivel cujo valor ser inicializado e incrementado, respeitando os
limites dos valores do conjunto fornecido;
VALOR_1, VALOR_2 VALOR_N: valores que VARIAVEL poder assumir durante
o loop;
AES: aes a serem tomadas repetidamente at que o valor de VARIAVEL

14 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

ASSINE MVP

http://www.devmedia.com.br/introducao-ao-shell...

Login

Baixe o APP

NOTA: A sequncia VALOR_1, VALOR_2 VALOR_N; na sintaxe pode ser substituda


por:

{VALOR_1..VALOR_N};

Observe que so apenas duas reticncias.


Quando o loop for comea, a varivel inicializada com o primeiro valor do
conjunto, e ocorre a primeira iterao (entrada no lao e execuo dos comandos).
Para as iteraes seguintes, os valores do conjunto sero atribudos varivel,
sucessivamente, at que se alcance o ltimo e o loop termine a execuo.
Veja o exemplo da Listagem 10, que conta decrescendo de 10 a 0.
Listagem 10. Exemplo de uso do loop for.

#!/bin/bash
echo Testando o loop for
for i in {10..0};
do
echo $i
done

Outra forma de criarmos sequncias de valores com o comando seq, como mostra
a Listagem 11.
Listagem 11. Exemplo de uso do loop for com o comando seq com intervalo.

#!/bin/bash
echo Testando o comando seq
for i in $(seq 1 5 100);
do
echo $i
done

Observe que foi criada uma sequncia de 1 at 100, com intervalo de 5.

15 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Baixe o APP

Login

Listagem 12. Exemplo de uso do loop for com o comando seq sem intervalo.

#!/bin/bash
echo Testando o comando seq
for i in $(seq 1 100);
do
echo $i
done

Observe que foi criada uma sequncia de 1 at 100, de 1 em 1.

Loop while
Enquanto o loop for mais ideal para quando sabemos at quanto contar, o loop
while bom para quando no temos essa noo, mas sabemos de uma condio
que dever ser atendida para que o lao termine. Sua sintaxe :

while [ CONDICAO ];
do
AES
done

Onde:
CONDICAO: condio cuja veracidade determina a permanncia no lao;
AES: aes a serem tomadas enquanto CONDICAO for verdadeira.
Vamos na Listagem 13 um exemplo que exibe ao usurio o que ele digitou,
enquanto ele no informar -1.
Listagem 13. Exemplo de uso do loop while.

#!/bin/bash
echo Informe o que voc quiser, -1 para sair
read dado;
while [ $dado != -1 ];

16 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Baixe o APP

Login

read dado;
done

Vejamos um outro exemplo com contador na Listagem 14.


Listagem 14. Exemplo de uso do loop while com contador.

#!/bin/bash
echo Informe at que valor positivo e maior que zero contar:
read valor;
i=1
while [ $i -le $valor ];
do
echo $i
((i=$i+1))
done

Funes
O uso de funes imprescindvel para separar, organizar e estruturar a lgica de
qualquer algoritmo, seja em shell script ou qualquer outra linguagem de
programao. Sua sintaxe muito simples:

nome_funcao()
{
AES
}

Funes podem chamar outras funes existentes no script, simplesmente


escrevendo-se o nome dela, como vemos no exemplo da Listagem15.
Listagem 15. Exemplo de uso de funes.

#!/bin/bash
main()
{
echo "Escolha uma opo:"

17 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

ASSINE MVP

http://www.devmedia.com.br/introducao-ao-shell...

Baixe o APP

Login

read opcao;
case $opcao in
"1")
esvaziar_lixeira
;;
"2")
calcular_fatorial
;;
esac
}
esvaziar_lixeira()
{
echo "Esvaziando a lixeira..."
path="${HOME}/.local/share/Trash/files"
cd "$path"
for file in *
do
rm -rf "$file"
done
echo "Done!"
}
calcular_fatorial()
{
echo "Informe um nmero:"
read numero;
i=1
fat=1
while [ $i -le $numero ]
do
fat=$(($fat*$i))
i=$(($i+1))
done
echo "fatorial de $numero $fat"
}
main

Nota: Lembre-se sempre de chamar a funo principal (no nosso caso, main) no
nal do seu script, do contrrio, nada acontecer quando voc o executar.

Argumentos
Normalmente um programa recebe argumentos como entrada, ou seja, dados
fornecidos pelo usurio ou por outro programa, os quais devem ser consumidos

18 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Baixe o APP

Login

Em shell script no poderia ser diferente: temos nomes especiais para designar os
argumentos recebidos por um script:
$0 contm o nome do script que foi executado;
$1 $n contm os argumentos na ordem em que foram passados (1
argumento em $1, 2 argumento em $2, etc.).
$# - contm o nmero de argumentos que foi passado (ou seja, no considera
o nome do script em $0);
$* - retorna todos os argumentos de uma vez s.
Vamos ao exemplo da Listagem 16 e sua execuo exibida na Figura 3.
Listagem 16. Exemplo de uso de argumentos em scripts.

#!/bin/bash
if [ $# -lt 1 ];
then
echo "Precisa fornecer pelo menos 1 argumento!"
exit 1
fi
echo "Nmero de argumentos passados: $#"
i=0
for argumento in $*
do
i=$(($i+1))
echo "Argumento $i passado: $argumento"
done

19 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Baixe o APP

Login

Figura 3. Sada da execuo do cdigo da Listagem 16


Conforme vimos no artigo, shell scripts so a melhor maneira de automatizar tarefas
dirias em sistemas Unix-like. Alm de prticos, nos poupam muito tempo, alm de
possurem uma sintaxe simples e permitir processar desde pequenas quantidades
de dados at executar tarefas mais robustas.

Aprenda ainda mais


Curso Administrao do Oracle 10g Express no Linux
Congurar rede Linux via Terminal (linha de comando)
Emulador de Terminal Linux com a classe Java Runtime
Publicado no Canal Mais

por Fernanda Brum


Programador apaixonado

Voc precisa estar logado para dar um feedback. Clique aqui para efetuar o login

Ajude-nos a evoluir: voc gostou do post?

(17)

(2)

Compartilhe:

20 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Ficou com alguma dvida?

Baixe o APP

Login

Ramon

Nossa, que artigo timo.


Parabns Fernanda Brum !
h 8 dias
Douglas

uhuuuullll, Ramon!
Legal que gostou do artigo :D
Qualquer problema estamos aqui.
Um forte abrao.
ontem

Adicionar um comentrio...

Leonardo Araujo

Parabns pelo artigo, tenho uma dvida: como poderia debugar (tcnicas) um shell script ?
h +1 ms
Douglas Claudio

Ol Leonardo, obrigado pelo seu comentrio.


Enviamos sua solicitao ao Fernanda e estamos no aguardo de um feedback do
mesmo.
Um abrao.
h +1 ms

[autor] Fernanda Lousada

Ol, Leonardo! Tem 3 tcnicas que costumo utilizar:


Tcnica 1:
Utilizar a opo -x para depurar o script inteiro. Na linha em que tu declara o shell a
executar o teu script, tu coloca tambm o "-x" ( sem aspas ), por exemplo:
#!/bin/bash -x
ou no prprio prompt, se tu preferir:
$fernanda@fenote: bash -x scriptname.sh

21 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

ASSINE MVP

http://www.devmedia.com.br/introducao-ao-shell...

Baixe o APP

Login

Utilizar a opo -x para depurar o script por partes. Neste caso, antes do bloco de cdigo
que tu quer depurar, tu coloca set -x , e encerra o bloco com set +x , por exemplo:
set -x # ativa o debug a partir daqui
.....
.....
set +x # desativa o debug a partir daqui
O "x" do comando significa xtrace e imprime uma sada "limpa", pois imprime cada
comando do arquivo antes de efetivamente executar o comando.
Tcnica 3:
Utilizar a opo -v , para iniciar o modo verbose, que imprime todas as linhas da entrada
conforme elas forem sendo lidas, ou seja, no final tu fica com uma mistura dos comandos
executados do teu script com os resultados destas execues, por exemplo:
#!bin/bash -v
ou
$fernanda@fenote: bash -v scriptname.sh
Por fim, lembra de colocar comandos echo antes e aps os trechos que tu quer depurar,
assim tu consegue verificar, por exemplo, que valores de variveis esto na memria
naqueles momentos.
h +1 ms

Adicionar um comentrio...

Patrcia Lousada

Muito bom
h +1 ms

Adicionar um comentrio...

Davi

muito bom! obg


h +1 ms

Adicionar um comentrio...

Cludia Lousada

Excelente artigo. Parabns!


h +1 ms

Adicionar um comentrio...

22 de 23

02/09/2016 00:42

Introduo ao Shell Script no Linux

CDIGOS

http://www.devmedia.com.br/introducao-ao-shell...

ASSINE MVP

Baixe o APP

Login

Artigo

Eclipse Linux Tools: conhecendo os principais plugins

LINUX

Artigo

Tratamento de Sinais em Linux usando Java

JAVA

LINUX

Artigo

Congurar rede Linux via Terminal (linha de comando)

LINUX

Artigo

Otimizando um servidor Linux para banco de dados


BANCO DE DADOS

LINUX

Artigo

Chega de lero-lero que o papo agora reto!

Listar mais contedo

23 de 23

02/09/2016 00:42

S-ar putea să vă placă și