Escolar Documentos
Profissional Documentos
Cultura Documentos
Papo de Botequim
Curso de Shell Script
Parte VIII
E
aê, cara, tudo bem? posicionais ($1, $2, …, $n). Todas as regras que se aplicam
– – Tudo beleza! Eu queria te mostrar o que fi z mas já sei
que você vai querer molhar o bico primeiro, né?
à passagem de parâmetros para programas também valem para
funções, mas é muito importante realçar que os parâmetros
– Só pra te contrariar, hoje não quero. Vai, mostra logo aí passados para um programa não se confundem com aqueles
o que você fez. que são passados para suas funções. Isso significa, por exem-
– Poxa, o exercício que você passou é muito grande. Dá uma plo, que o $1 de um script é diferente do $1 de uma de suas
olhada na listagem 1 e vê como eu resolvi: funções internas.
– É, o programa tá legal, tá todo estruturadinho, mas gosta- Repare que as variáveis $Msg, $TamMsg e $Col são de uso
ria de fazer alguns poucos comentários: só para relembrar, restrito dessa rotina e, por isso, foram criadas como variáveis
as seguintes construções: [ ! $Album ] && e [ $Musica ] locais. A razão é simplesmente a economia de memória, já que
|| representam a mesma coisa, isto é: no caso da primeira, ao sair da rotina elas serão devidamente detonadas, coisa que
testamos se a variável $Album não (!) tem nada dentro, então não aconteceria se eu não tivesse usado esse artifício.
(&&)… Na segunda, testamos se $Musica tem algum dado, A linha de código que cria a variável local Msg concatena ao
senão (||)… texto recebido ($1) um parêntese, a resposta padrão ($2) em
Se você reclamou do tamanho do programa, é porque ainda caixa alta, uma barra, a outra resposta ($3) em caixa baixa
não te dei algumas dicas. Repare que a maior parte do script e fi naliza fechando o parêntese. Uso essa convenção para, ao
é para mostrar mensagens centraliza-
das na penúltima linha da tela. Repare Listagem 1: musinc5.sh
ainda que algumas mensagens pedem
01 $ cat musinc5.sh
um S ou um N como resposta e outras
02 #!/bin/bash
são só de advertência. Isso é um caso
03 # Cadastra CDs (versao 5)
típico que pede o uso de funções, que
04 #
seriam escritas somente uma vez e
05 clear
executadas em diversos pontos do
06 LinhaMesg=$((`tput lines` - 3)) # Linha onde serão mostradas as msgs para o operador
script. Vou montar duas funções para
07 TotCols=$(tput cols) # Qtd colunas da tela para enquadrar msgs
resolver esses casos e vamos incor-
08 echo “
porá-las ao seu programa para ver o
Inclusão de Músicas
resultado fi nal.
======== == =======
– Chico! Agora traz dois chopes, um
Título do Álbum:
sem colarinho, para me dar inspira-
| Este campo foi
ção. E você, de olho na listagem 2.
Faixa: < criado somente para
Como podemos ver, uma função é
| orientar o preenchimento
defi nida quando digitamos nome_da_
Nome da Música:
função () e todo o seu corpo está
Intérprete:” # Tela montada com um único echo
entre chaves ({}). Já conversamos aqui
09 while true
no boteco sobre passagem de parâ-
10 do
metros e as funções os recebem da
11 tput cup 5 38; tput el # Posiciona e limpa linha ➟
mesma forma, isto é, são parâmetros
Conselho de amigo: crie um arquivo e anexe a ele cada fun- diretório /home. Só que assim que a execução do script termi-
ção nova que você criar. Ao final de algum tempo você terá nou, o sub-shell foi para o beleléu e, com ele, todo o ambiente
uma bela biblioteca de funções que lhe poupará muito tempo criado. Agora preste atenção no exemplo abaixo e veja como a
de programação. coisa muda de figura:
09 fi
Sistemas desde 1969 e trabalha com Unix
10 IFS=”
11 :” desde 1980, quando participou do desen-
12 for ArtMus in $(cut -f2 -d^ musicas) volvimento do SOX, um sistema operacio-
13 do nal similar ao Unix produzido pela Cobra
14 echo “$ArtMus” | grep -i “^$*~” > /dev/null && echo $ArtMus | cut -f2 -d~ Computadores. Pode ser contatado no
15 done e-mail julio.neves@gmail.com