Você está na página 1de 36

16/01/14

Introduo ao Shell Script no Linux

LOGIN

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.

23

15

Curtir

19

Gostei (1)

(1)

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

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

1/36

16/01/14

Introduo ao Shell Script no Linux

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

t o u c hs h e l l 1 . s h

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

2/36

16/01/14

Introduo ao Shell Script no Linux

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

c h m o d+ xs h e l 1 1 . s h

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.
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 3/36

16/01/14

Introduo ao Shell Script no Linux

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.

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

4/36

16/01/14

Introduo ao Shell Script no Linux

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

v i ms h e l l 1 . s h

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:

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

5/36

16/01/14

Introduo ao Shell Script no Linux

Listagem 4: Viso da primeira linha shell script

# ! / b i n / b a s h

Cdigo visto no vim:

Figura 6: Viso do trecho de cdigo inicial no terminal Abaixo possvel ver o cdigo quando editado pelo gedit.

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

6/36

16/01/14

Introduo ao Shell Script no Linux

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

# ! / b i n / b a s h e c h o" A b r i n d og a v e t a . . . " e j e c t
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 7/36

16/01/14

Introduo ao Shell Script no Linux

s l e e p1 e c h o" Ag a v e t as e r f e c h a d a . . . " s l e e p1 e j e c tt

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

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

8/36

16/01/14

Introduo ao Shell Script no Linux

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

# ! / b i n / b a s h # E us o uu mc o m e n t r i o . e c h o E x i s t eu mc o m e n t r i on e s t es h e l ls c r i p t

Figura 10: Figura que demonstra a execuo do shell1.sh

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

9/36

16/01/14

Introduo ao Shell Script no Linux

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:
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 10/36

16/01/14

Introduo ao Shell Script no Linux

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

c o r _ c a s a = v e r d e n u m e r o = 3 2

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

# ! / b i n / b a s h c o r _ c a s a = V E R D E e c h o Ac o rd ac a s a$ c o r _ c a s a e x i t

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.
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 11/36

16/01/14

Introduo 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 diretrio tem. Listagem 9: Script shell que conta o total de arquivos em um diretrio

# ! / b i n / b a s h t o t a l _ l i n h a s = $ ( l s|w cl )

e c h o E x i s t e$ t o t a l _ l i n h a sn e s t ed i r e t r i o .

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:

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

12/36

16/01/14

Introduo ao Shell Script no Linux

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

# ! / b i n / b a s h e c h oQ u a ls e un o m e :
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 13/36

16/01/14

Introduo ao Shell Script no Linux

r e a dn o m e ; e c h o B e mv i n d o$ n o m e e x i t

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
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 14/36

16/01/14

Introduo ao Shell Script no Linux

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

# ! / b i n / b a s h e c h on" D i g i t eu ma l g o :" r e a dv a l o r _ d i g i t a d o i f[" $ v a l o r _ d i g i t a d o "e q" 3 "] ; t h e n e c h oV o c d i g i t o uon u m e r o3 f i

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

15/36

16/01/14

Introduo ao Shell Script no Linux

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

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

16/36

16/01/14

Introduo ao Shell Script no Linux

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

# ! / b i n / b a s h e c h on" D i g i t eu ma l g o :" r e a dv a l o r _ d i g i t a d o i f[ $ v a l o r _ d i g i t a d o e q 3 ] ; t h e n e c h o V o c d i g i t o uon u m e r o3 e l s e e c h o" V o c d i g i t o uoc a r a c t e r$ v a l o r _ d i g i t a d o " ; f i

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

17/36

16/01/14

Introduo ao Shell Script no Linux

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

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

18/36

16/01/14

Introduo ao Shell Script no Linux

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

# ! / b i n / b a s h e c h on" D i g i t eu ma l g o :" r e a dv a l o r _ d i g i t a d o i f[ $ v a l o r _ d i g i t a d o e q 3 ] ; t h e n e c h o" V o c d i g i t o uon u m e r o3 " e l i f[ $ v a l o r _ d i g i t a d o e q 4 ] ;t h e n e c h o" V o c d i g i t o uon u m e r o4 " e l i f[ $ v a l o r _ d i g i t a d o e q 5 ] ;t h e n


www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 19/36

16/01/14

Introduo ao Shell Script no Linux

e c h o" V o c d i g i t o uon u m e r o5 " e l s e e c h o V o c n od i g i t o un e n h u mn m e r oa c e i t o f i

Figura 19: Demonstrao do cdigo com o comando condicional elif no shell script

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

20/36

16/01/14

Introduo ao Shell Script no Linux

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.
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 21/36

16/01/14

Introduo ao Shell Script no Linux

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

# ! / b i n / b a s h e c h o" D i g i t e1o u2 " r e a do p c a o ; c a s e" $ o p c a o "i n " 1 " ) e c h o" V o c d i g i t o u1 " ; ; ; " 2 " ) e c h o" V o c d i g i t o u2 " ; e s a c e x i t

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

22/36

16/01/14

Introduo ao Shell Script no Linux

Figura 21: do cdigo com o lao for no shell script

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

23/36

16/01/14

Introduo ao Shell Script no Linux

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
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 24/36

16/01/14

Introduo ao Shell Script no Linux

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

# ! / b i n / b a s h l i m i t e _ c o n t a d o r = 4 f o rc o n t a d o ri n{ 1 . . 4 } ; d o e c h o" M e s s a g e me x i b i d a$ c o n t a d o rv e z " . s l e e p1 ; d o n e

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

25/36

16/01/14

Introduo ao Shell Script no Linux

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
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 26/36

16/01/14

Introduo ao Shell Script no Linux

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

# ! / b i n / b a s h c o n t a d o r = 1 w h i l e[$ c o n t a d o rn e4] ; d o e c h o" M e s s a g e me x i b i d a$ c o n t a d o rv e z " . s l e e p1 ; ( ( c o n t a d o r = $ c o n t a d o r + 1 ) ) d o n e

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

27/36

16/01/14

Introduo ao Shell Script no Linux

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:


www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 28/36

16/01/14

Introduo ao Shell Script no Linux

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

# ! / b i n / b a s h p r i n c i p a l ( ) { e s c o l h a = 1 w h i l e[$ e s c o l h an e0] ; d o e c h o" E s c o l h au m ao p o " e c h o" 1 -F a z e rt a b u a d ad o2 " ; e c h o" 2 -F a z e rt a b u a d ad o3 " ; e c h o" 0 -S a i r " ; e c h on" : " ; r e a de s c o l h a ; i f[" $ e s c o l h a "e q" 1 "] ; t h e n g e r a r T a b u a d a 2 e l i f[" $ e s c o l h a "e q" 2 "] ; t h e n g e r a r T a b u a d a 3 f i d o n e } g e r a r T a b u a d a 3 ( ) { f o rii n{ 1 . . 1 0 } ;d o e c h o" $ i * 3 = " $ i * 3
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 29/36

16/01/14

Introduo ao Shell Script no Linux

d o n e } g e r a r T a b u a d a 2 ( ) { f o rii n{ 1 . . 1 0 } ;d o e c h o" $ i * 2 = " $ i * 2 d o n e } p r i n c i p a l

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

30/36

16/01/14

Introduo ao Shell Script no Linux

Figura 27: Demonstrao do cdigo fonte de um shell script com funes

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

31/36

16/01/14

Introduo ao Shell Script no Linux

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.

O que voc achou deste post? Gostei (1) (1)


32/36

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

16/01/14

Introduo ao Shell Script no Linux

Poste seu comentrio


Flav io Mo ra es Se u ltim o sc rip t n o f unciona . A cor re o q ue fiz fo i tes ta da em v rias d istribui es e es t f unc io na ndo . A cor re o e ss a: #!/b in/ba sh pr incipal() { es co lha=-1 while [ $es co lha -ne 0 ]; do ec ho "Esc olha um a op cao " ec ho "2 - f az er ta buada d o 2"; ec ho "3 - f az er ta buada d o 3"; ec ho "0 - S air"; ec ho -n ": "; re ad e sco lha; if [ "$es co lha" -e q "2" ]; then ge ra rT abuad a2 elif [ "$es co lha " -e q "3" ]; then ge ra rT abuad a3 fi do ne } ge ra rT abuad a3() { fo r ((i=0; i<11; i++)) do ec ho "$i*3=" `ex pr $i \* 3` do ne } ge ra rT abuad a2() { fo r i in {1..10}; do ec ho "$i*2=" `ex pr $i \* 2`
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 33/36

16/01/14

Introduo ao Shell Script no Linux

do ne } pr incipal [h +1 m s] - Re sp onder

Publicidade

Servios
Inclua um comentrio Adicionar aos Favoritos Marcar como lido/assistido Incluir anotao pessoal

+Outros

Mais posts
Artigo

DevMedia Player para Android - FAQ

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

34/36

16/01/14

Introduo ao Shell Script no Linux

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


www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778 35/36

16/01/14

Introduo ao Shell Script no Linux

Anuncie | Loja | Publique | Assine | Fale conosco

DevMedia
Curtir

18.735 pessoas curtiram DevMedia.

Plug-in social do Facebook

Hospedagem web por Porta 80 Web Hosting Todos os Direitos Reservados a Web-03

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

36/36