Shell Script: Primeiros conceitos

Introdução ao Shell Script, esta poderosa ferramenta que facilita bastante a administração dos sistemas Linux. Com este artigo, espero dar base àqueles que ainda não conhecem o Shell Script para começar a desenvolver seus próprios scripts e entender também scripts feitos por outros membros da comunidade.

[ Hits: 116.701 ]

Por: Pablo Carlos de S. Furtado em 21/04/2005


Entendendo linha-a-linha



#! /bin/bash

Serve para indicar qual dos shells (alguém aí sabe qual o plural de shell?) será utilizado para a execução dos comandos contidos no script. No nosso caso, utilizaremos o bash (que é o mais utilizado atualmente).

echo ""

O comando "echo" serve para jogar mensagens na tela, quando colocamos ele sem nenhuma mensagem, teremos uma linha em branco na tela. Temos então uma saída menos embolada das informações na tela :)

echo -e "Qual partição você deseja montar?" "\c"

O parâmetro "-e" do comando echo ativa a interpretação de opções como a "\c", que por sua vez, faz com que a resposta do usuário fique na linha em que termina o texto que será jogado na tela pelo echo. Sem o "\c", a resposta do usuário será digitada na linha de baixo. Isso não altera em nada o funcionamento do script.

read part

Nesta linha, o comando read guarda o que foi respondido pelo usuário na string part. O nome da string pode ser o que você quiser, usei part porque conterá o nome da partição a ser montada.

echo

Linha em branco na tela!

echo "Onde deseja montar $part ?"

Esta é a segunda pergunta feita ao usuário, sendo jogada na tela pelo comando echo. Agora string part é jogada na tela, usamos um $ antes para indicar que se trata de uma string, fazendo o shell exibir seu conteúdo, ou seja, se não colocarmos o $ antes do nome da string, a palavra part seria jogada na tela como outra qualquer e não o conteúdo da string part ;).

Um pequeno detalhe, repare que sem os parâmetros -e e "\c", do comando echo, a resposta do usuário será escrita na linha de baixo, não na mesma linha em que termina a pergunta.

read dir

Aqui criamos outra string (dir), essa string conterá o nome do diretório que o usuário digitou, para ser usado mais tarde.

if [ -d $dir ]

O comando if combinado com o comando test (representado por [ ]) tem uma importante função no script. O comando test ([ ]) testa as condições nele colocadas, ou seja, no nosso caso, se o diretório que o usuário digitou (que está contido na string dir) realmente é um diretório (parâmetro -d). Para testar a string, por exemplo, como um arquivo comum, usaria-se o parâmetro -f.

Mas e o comando if? O comando if executa determinadas ações se o "teste" se confirmar e outras se o "teste" for falso. Nas próximas linhas veremos exatamente como isso funciona.

then

O then faz parte do comando if. Depois do then, coloca-se os comandos a serem executados caso o "teste" se confirme.

mount /dev/$part $dir

Nesta linha são "jogadas" as strings para a execução do comando que montará a partição indicada pelo usuário, no diretório também indicado por ele. Na linha do comando indicamos que se trata de uma string usando o $ antes de seu nome, fazendo que o conteúdo da string seja usado no comando. Ou seja, na string part temos como conteúdo o nome da partição a ser montada e na string dir temos onde deverá ser montada a partição indicada anteriormente.

else

O else também faz parte do comando if. Depois do else, são colocadas as linhas a serem executadas caso aquele "teste" não se confirme.

echo "$dir Não existe!"

Se o diretório não existir, o comando echo jogará na tela a mensagem indicando ao usuário que o diretório de fato não existe.

fi

Indica o "fim" do comando if, ou seja, a partir daqui, as linhas são executadas independentemente do resultado do "teste" que foi feito com o nome do diretório.

Pronto!

Pode ser um exemplo considerado "bobo", mas espero que sirva para se pegar os primeiros conceitos, funções de alguns comandos, estruturação de script, o que é, aliás, o verdadeiro intuito do artigo.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Primeiro script
   3. Entendendo linha-a-linha
   4. A "força" do Shell Script
Outros artigos deste autor

Onde os iniciantes devem buscar soluções para os seus problemas

Leitura recomendada

Sed - Introdução

Shell Script para WEB

expr - Definição e uso do comando

Criando um banner em flash no Linux

Introdução ao Fortran (parte 1)

  
Comentários
[1] Comentário enviado por leoberbert em 21/04/2005 - 13:20h

Caro amigo,

Estou aqui para parabenizá-lo pelo artigo, pois ainda não tinha visto nenhum tutorial que explicasse com clareza essa incrível ferramenta, ficou muito bom e espero que em breve vc estege postando algo mais que faça referência ao mesmo, parabéns pelo ótimo artigo.

Leonardo Berbert Gomes.

[2] Comentário enviado por davidsonpaulo em 21/04/2005 - 16:32h

Aew! Granda Pablo! Tah destruindo nos artigos hein guri! Imagina quando esse cara tiver a sua maquina potente em casa pra praticar... teremos mais um poderoso pinguim contribuindo para o crescimento da comunidade. Eh isso ae guri, parabens!

[3] Comentário enviado por removido em 21/04/2005 - 22:03h

OPa!,

Parabéns amigo pelo artigo essa introdução ajuda muitos concerteza. Só que gostaria de comentar algo na parte que você trabalha com variaveis e diz que são strings.

como segue:
===========================================================
Nesta linha, o comando read guarda o que foi respondido pelo usuário na string part. O nome da string pode ser o que você quiser, usei part porque conterá o nome da partição a ser montada.
===========================================================

corrigido:
===========================================================
Nesta linha, o comando read guarda o que foi respondido pelo usuário na >>variavel<< part. O nome da >>>variavel<<< pode ser o que você quiser, usei part porque conterá o nome da partição a ser montada.
===========================================================

Pelo que sei string é o que vai dentro da variavel nesse caso e não sendo a variavel. Ao menos em outras linguagens toda variavel é indentificada quando "guarda" temporariamente na memoria da execução do script informações.


--
Abs,
guinet gmail com


[4] Comentário enviado por engos em 22/04/2005 - 09:35h

Muito bom o artigo.

Acho que já foi comentado o que tinha de ser, por isso parabéns pela simplicidade e praticidade.

[]s

[5] Comentário enviado por beetle_juice em 22/04/2005 - 23:18h

Muito bom artigo, gostaria de ver mais desses aki no v.o.l esse jah foi para o meu espaço "favoritos"!
Parabéns..
t+
[]'s
beetle_juice

[6] Comentário enviado por feraf em 23/04/2005 - 09:19h

Só há um pequeno problema com o script do 'instalador':

Quando você da o comando 'su', ele interrompe o script, e só continua ele quando você da um 'exit' e sai do root. Uma alternativa seria entrar no su já passando um comando a ser executado. Ele irá entrar como root, executar o comando e sair. Somente substituindo os comandos 'su' e 'make install' por:

su -c 'make install'

Felipe

[7] Comentário enviado por removido em 23/04/2005 - 09:30h

Boa introdução. Mas fazer scripts, como descobri, é conhecer sobre os comandos dos programas Linux e à integrá-los entre si.

E é sim possível fazer coisas incríveis com essa modalidade de programação, mas pra isso é necessário profundo conhecimento da "linha de comando".

Para quem procura se aprofundar, recomendo o excelente livro Programação Shell Linux JULIO CEZAR NEVES .

[8] Comentário enviado por pexao em 23/04/2005 - 11:01h

Parabens pelo artigo.

Porem vi um erro na primeira pagina.

Voce tornou o arquivo executavel que se chama:
--------------------------------------------------------------
Agora vamos tornar este arquivo de texto em um arquivo executável:

$ chmod +x instalar
--------------------------------------------------------------

E depois utilizou o arquivo para executar:
--------------------------------------------------------------
$ ./instalador
--------------------------------------------------------------

Sei que parece simples porem quando uma pessoa erra apenas uma virgula, pode gerar um problema enorme.
Fica a dica ae.
:)

[ ]'

Fernando Pereira

[9] Comentário enviado por pablocarlos em 23/04/2005 - 11:34h

E aí pessoal !
Queria agradecer a todos que leram o artigo e a todos os que corrigiram os erros q foram aparecendo(que por sinal sao bem graves, mesmo que pequenos)...
Acontece que não tenho tanto tempo de bagagem Linux...mas nao quero justificar erros, estou aí pra aprender c/ eles e c/ toda a comunidade.
Obrigado e espero que, mesmo c/ todos os erros, tenha ajudado alguém !

[10] Comentário enviado por removido em 23/04/2005 - 18:46h

Bom seu artigo, é bem fácil de entender.

[11] Comentário enviado por agk em 28/04/2005 - 21:29h

Parabéns pelo artigo, se eu tivesse lido isso quando estava aprendendo shell script teria me ajudado muito com certeza. Excelente artigo para que está começando a navegar pelas linha de comando, ehehe.
Sugestão: em um próximo artigo procure aprofundar um pouco mais, utilizando váriáveis do sistema, comandos como while, for, entre outros. Shell Script tem muita coisa, muita mesmo.

[12] Comentário enviado por Hernando em 07/06/2005 - 10:10h

Parabéns... ótimo artigo... Porque tu não faz agora um onde a partição e o ponto de montagem são variaveis pré definidas e acionadas atraves de um comando simples tipo:

1) Partição01
2) Partição02
3) Partição...

e consequentemente

1) PontoMNT01
1) PontoMNT02
1) PontoMNT...

Eu já o tenho aqui pois acho muito util na hora de montar pontos de rede em outra plataforma onde tenho que ficar digitando milhões de coisa... Só não postei para dar a dica pra tu dar continuação ao teu artigo

Abraços

[13] Comentário enviado por mailws em 11/11/2005 - 20:09h

Parabéns. Agora quero saber, se tem como, fazer um link para o arquivo que agente acabou de construir, sem precisar toda vez que for executar, digitar "./arquivo".

[14] Comentário enviado por mailws em 21/11/2005 - 04:30h

Excellente, bem explicado!!! Parabéns.

[15] Comentário enviado por parolin em 14/02/2006 - 14:24h

Muito bem escrito e explicado...

Excelente para iniciantes...

Parolin

[16] Comentário enviado por acollucci em 04/04/2006 - 09:32h

afff enfim oque eu precisava

vlw pela contribuição

[17] Comentário enviado por antoniojbs em 05/09/2006 - 12:59h

Parabéns pablocarlos seu artigos esta me ajudando muito,um artigo bem elaborado para quem esta començando e não sabe nada de shel como eu,mas estou fazendo muitas buscas e lendo muito a respeito da linguagem espero que com a ajuda d pessoas como vc eu consiga me tornar pelo menos razoavel......

[18] Comentário enviado por Rubico em 27/04/2007 - 22:37h

A melhor explicação que já li sobre Shell Script!
Parabéns pela inteligência e criatividade!

[19] Comentário enviado por nukelinux em 08/06/2007 - 17:00h

Parabéns pelo artigo!!! Ficou muito bom!!!

[20] Comentário enviado por luizhacker em 08/12/2007 - 14:38h

Excelente artigo!!!

[21] Comentário enviado por GilsonDeElt em 31/12/2007 - 17:37h

Cara, d+!

Um dos melhores que já li sobre Shell Script para iniciantes.
Tô no Linux a um tempo, mas agora que tô começando a brincar mais com o Shell.

Uma coisa:
o script da 2ª página só pode ser executado pelo root
para executá-lo como usuário comum, devo mudar as permissões de uso do comando?

No mais, parabéns pelo artigo, cara!
Caso eu tenha alguma idéia pra ajudar nos próximos artigos, eu te mando, hehe.

[22] Comentário enviado por yakuza em 04/03/2008 - 00:34h

Mandou bem!
Parabéns.

[23] Comentário enviado por educanario em 18/08/2008 - 15:01h

Exeleten artigo amigo.

[24] Comentário enviado por felipe73 em 03/05/2009 - 03:00h

Vlw, to começando com shellscript agora e este artigo ajudou bastante!

[25] Comentário enviado por marcusmc em 16/06/2009 - 03:18h

Belo ponto de partida para quem está começando.

Valeu pela contrbuição.

[26] Comentário enviado por piiruck@ em 27/04/2010 - 12:13h

Bom Eu quero saber como eu executo o shells aonde eu execute não entendi essa parte qual programa ultilizo aonde escrevo os comandos para exectar me ajuda ae Vlw...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts