Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Controle de laço em shells

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 22 de Abril de 1997

Uma facilidade bastante poderosa oferecida pelas shells de sistemas Unix em geral é o controle de laço. Por meio delas pode-se executar rapidamente tarefas complexas.

A sintaxe é bastante simples e consiste basicamente no seguinte

  % for variavel in a b c d ...
  > do
  > comandos
  > ...
  > done

Esta construção é válida para a Bourne Shell e similares (ksh, p.ex.). Na primeira linha define-se a variável e os valores que esta variável irá assumir durante a execução. A diretiva "do" indica o início dos comandos a serem executados até que se esgotem os valores atribuídos à variável. E a diretiva "done" sinaliza o fim da execução. O mais interessante é que a variável pode assumir os valores gerados por um comando do unix. Para isto basta delimitar o comando unix entre aspas invertidas (`).

Todos os exemplos aqui citados são invocados a partir da linha de comandos. Ao se teclar <ENTER> após a digitação da linha contendo a diretiva "for" o prompt se modifica para o caracter ">". Ao final do laço, indicado pela diretiva "done", os comandos são então executados. Nada impede entretanto que estes comandos sejam gravados em um arquivo e executados como uma shell script tradicional. O objetivo é justamente ensinar estruturas simples para serem utilizadas diretamente da linha de comandos.

Os exemplos abaixo irão ajudar a esclarecer a utilização desta estrutura.

Exemplo 1:

Em um diretório existem vários arquivos que possuem letras maiúsculas em seu nome. Renomea-los de forma a que em seu nome existam apenas letras minúsculas:

  % for file in `ls`
  > do
  > mv $file ""echo $file | dd conv=lcase""
  > echo $file
  > done
Neste exemplo a variável "file" irá assumir os valores retornados pelo comando ls. O comando mv irá renomear os arquivos do diretório corrente para o valor retornado pela saída do comando echo processada pelo comando dd. A opção conv=lcase do comando dd faz uma tradução dos caracteres maiúsculos para minúsculos. O comando "echo $file" serve apenas para indicar o progresso da execução do comando.

Exemplo 2:

Gerar as versões formatadas de vários arquivos que estão no formato nroff. Cada documento formatado deverá possuir a terminação .doc.

  % for file in `ls`
  > do
  > nroff -man $file | col -b > ""echo $file | awk -F. '{print $1}'"".doc
  > echo $file
  > done
Neste exemplo, foi invocado o comando nroff para processar o arquivo. A saída deste comando é então redirecionada para o comando "col" que irá retirar os sublinhados e caracteres que não entendidos corretamente por algumas impressoras. O resultado destes dois comandos é gravado em um arquivo cujo nome é formado com o auxílio do comando awk, que irá obter do nome original o primeiro qualificador e acrescentar o sufixo .doc. Por exemplo, o nome ls.1 seria substituído pelo nome ls.doc e assim sucessivamente.

Exemplo 3:

Enviar a mensagem gravada no arquivo de nome "mensagem" para os endereços eletrônicos gravados no arquivo de nome "usuarios".

  % for user in `cat usuarios`
  > do
  > mail -s "Convocacao para reuniao semestral" $user < mensagem
  > echo $user
  > done

Veja a relação completa dos artigos de Rubens Queiroz de Almeida

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 2.93/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 2.9 /5 (1412 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

Guia Manga Universo