



Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Neste documento, aprenda a utilizar funções e chamadas externas em scripts shell para simplificar o código, manter o script e reutilizar código. Saiba como declarar, chamar e passar parâmetros para funções, além de como centralizar mensagens na tela. Este artigo é uma tradução de um texto original em inglês.
Tipologia: Notas de estudo
1 / 6
Esta página não é visível na pré-visualização
Não perca as partes importantes!




Curso de Shell Script
Listagem 1: musinc5.sh 01 $ cat musinc5.sh 02 #!/bin/bash 03 # Cadastra CDs (versao 5) 04 # 05 clear 06 LinhaMesg=$((tput lines - 3)) # Linha onde serão mostradas as msgs para o operador 07 TotCols=$(tput cols) # Qtd colunas da tela para enquadrar msgs 08 echo “ Inclusão de Músicas ======== == ======= Título do Álbum: | Este campo foi Faixa: < criado somente para | orientar o preenchimento Nome da Música: Intérprete:” # Tela montada com um único echo 09 while true 10 do
Dave Hamilton - www.sxc.hu Linux User 86
maio 2005 edição 08
12 read Album 13 [! “$Album” ] && # Operador deu
Listagem 4: musinc6.sh 01 $ cat musinc 02 #!/bin/bash 03 # Cadastra CDs (versao 6) 04 # 05 # Área de variáveis globais 06 # Linha onde as mensagens serão exibidas 07 LinhaMesg=$((tput lines - 3)) 08 # Quantidade de colunas na tela (para enquadrar as mensagens) 09 TotCols=$(tput cols) 10 # Área de funções 11 Pergunta () 12 { 13 # A função recebe 3 parâmetros na seguinte ordem: 14 # $1 - Mensagem a ser dada na tela 15 # $2 - Valor a ser aceito com resposta default 16 # $3 - O outro valor aceito 17 # Supondo que $1=Aceita?, $2=s e $3=n, a linha 18 # abaixo colocaria em Msg o valor “Aceita? (S/n)” 19 local Msg=”$1 (echo $2 | tr a-z A-Z/echo $3 | tr A-Z a-z)” 20 local TamMsg=${#Msg} 21 # Centraliza a mensagem na linha 22 local Col=$(((TotCols - TamMsg) / 2)) 23 tput cup $LinhaMesg $Col 24 echo “$Msg” 25 tput cup $LinhaMesg $((Col + TamMsg + 1)) 26 read -n1 SN 27 [! $SN ] && SN=$2 # Se vazia, coloca default em SN 28 echo $SN | tr A-Z a-z # A saída de SN será em minúsculas 29 tput cup $LinhaMesg $Col; tput el # Apaga msg da tela 30 return # Sai da função 31 } 32 function MandaMsg 33 { 34 # A função recebe somente um parâmetro 35 # com a mensagem que se deseja exibir; 36 # para não obrigar o programador a passar 37 # a msg entre aspas, usaremos $* (todos 38 # os parâmetro, lembra?) e não $1. 39 local Msg=”$*” 40 local TamMsg=${#Msg} 41 # Centraliza mensagem na linha 42 local Col=$(((TotCols - TamMsg) / 2)) 43 tput cup $LinhaMesg $Col 44 echo “$Msg” 45 read -n 46 tput cup $LinhaMesg $Col; tput el # Apaga msg da tela 47 return # Sai da função 48 } 49 # O corpo do programa propriamente dito começa aqui 50 clear 51 # A tela a seguir é montada com um único comando echo 52 echo “ Inclusão de Músicas ======== == ======= Título do Álbum: Faixa: Nome da Música: Intérprete:” 53 while true 54 do 55 tput cup 5 38; tput el # Posiciona e limpa linha 56 read Album 57 [! “$Album” ] && # Operador deu
Listagem 5: musinc7.sh 01 $ cat musinc7.sh 02 #!/bin/bash 03 # Cadastra CDs (versao 7) 04 # 05 # Área de variáveis globais 06 LinhaMesg=$((tput lines - 3)) # Linha onde serão mostradas as msgs para o operador 07 TotCols=$(tput cols) # Qtd colunas da tela para enquadrar msgs 08 # O corpo do programa propriamente dito começa aqui 09 clear 10 echo “ Inclusão de Músicas ======== == ======= Título do Álbum: | Este campo foi Faixa: < criado somente para | orientar o preenchimento Nome da Música: Intérprete:” # Tela montada com um único echo 11 while true 12 do 13 tput cup 5 38; tput el # Posiciona e limpa linha 14 read Album 15 [! “$Album” ] && # Operador deu
maio 2005 edição 08