Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
LOGIN
Buscar
post favorito
comentrios
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
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.
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
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
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
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
# ! / b i n / b a s h
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
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
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
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
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778
9/36
16/01/14
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
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
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
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
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
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
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
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
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778
15/36
16/01/14
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
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
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778
17/36
16/01/14
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
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
16/01/14
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
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
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
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778
23/36
16/01/14
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
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
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
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
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778
27/36
16/01/14
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;; }
16/01/14
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
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778
30/36
16/01/14
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778
31/36
16/01/14
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.
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778
16/01/14
16/01/14
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
www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778
34/36
16/01/14
Pocket Video
16/01/14
DevMedia
Curtir
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