Buscar

04 agenda telefonica

Prévia do material em texto

Programação para servidores
Redes de Computadores – DANIEL RIBEIRO MATOS
Fortaleza, 2017.1
READ
● O comando read lê uma informação 
digitada pelo usuário
● Exemplo:
echo “Digite um valor:”
read valor
– O que o usuário digitar até que aperte a tecla 
“enter” será salvo na varável $valor
Prática: faça o script acima e adicione uma linha para que 
ele mostre o que o usuário digitou
Agenda Telefônica em Shell Script
Agenda Telefônica
● Vamos criar um script que controla 
um arquivo de texto com uma 
agenda telefônica:
Zé dos pão (85) 3212-2828
Chica Costureira (85) 98788-0001
Manoel dos Peba (88) 99999-0909
● O script deve apresentar um menu, 
com as opções de procurar por um 
nome e adicionar uma nova entrada 
a lista
– Mais adiante podemos incluir mais opções, 
como apagar ou alterar um registro
– Por hora, vamos apenas aos mais simples
Tratando as opções
● Como saber qual opção o usuário 
digitou?
● Pode ser feito usando o “if”:
if [ $opcao -eq 1 ]
then
código para procurar uma entrada
elif [ $opcao -eq 2 ]
then
código para adicionar uma nova entrada
f
● Mas se eu tiver muitas opções:
if [ $opcao -eq 1 ]
then
código para opção 1
elif [ $opcao -eq 2 ]
then
código para opção 2
elif [ $opcao -eq 3 ]
then
código para opção 3
elif [ $opcao -eq 4 ]
código para opção 4
f
O uso do “case” é mais adequado para avaliar opções 
conhecidas
case $opcao in
1) código para opção 1 ;;
2) código para opção 2 ;;
3) código para opção 3 ;;
4) código para opção 4 ;;
*) echo “Você não digitou opção válida ;;
esac
● Voltando ao script, a opção 1 irá 
procurar um telefone, dado um nome 
ou parte de um nome
● O primeiro passo é ler o nome ou parte 
no nome que será procurado:
echo “Digite o nome ou parte do nome”
read busca
● Agora para procurar a informação 
digitada no arquivo de texto, precisamos 
utilizar o grep, que é o comando no 
Linux que procura padrões em arquivos:
grep padrão arquivo
exemplo:
grep daniel /var/lista_admin
● Irá buscar as linhas que possuem “daniel” no arquivo 
/var/lista_admin
Prática: criem arquivos de texto ou pesquisem em arquivos já 
existentes usando o grep
● Nós precisamos defnir qual será o arquivo 
da agenda telefônica de nosso script.
● Podemos fazer isto de duas formas, no 
próprio script, por exemplo:
AGENDA=/home/aluno/agenda.txt
● Ou podemos passar o arquivo da agenda 
como parâmetro para o script:
./agenda.sh /home/aluno/agenda.txt
● Façamos da segunda forma, assim 
nós podemos gerenciar mais de uma 
agenda com o mesmo script
● O primeiro passo do script agora é 
checar se o usuário digitou um 
argumento e se esse argumento é um 
arquivo
if [ $# -ne 1 ] 
then
echo “Você deve chamar o script assim:”
echo “$0 arquivo_de_agenda”
exit -1
f
● Com este código, o que acontece se o 
usuário digitar um diretório como 
argumento:
./agenda.sh /home
Assim, além de testar se o usuário digitou um 
argumento, precisamos testar se esse argumento é 
realmente um arquivo.
● Poderíamos fazer isto com um novo if:
AGENDA=$1
if [ ! -f $AGENDA ]
then 
echo “Você não digitou um arquivo válido”
exit -1
f
● Ou podemos por a condição de testar o arquivo, no else do if anterior:
AGENDA=$1 
if [ $# -ne 1 ] 
then
echo “Você deve chamar o script assim:”
echo “$0 arquivo_de_agenda”
exit -1
else 
if [ ! -f $AGENDA ] 
then
echo “Você não digitou um arquivo válido”
exit -1
f
f
 
● Voltando agora para a implementação 
da opção de busca na agenda:
case $opcao in
1) read $busca
echo “Digite o nome ou parte do nome”
grep $busca $AGENDA
;;
● E na opção de incluir um novo nome, vamos 
precisar do operador de redirecionamento “>>”
case $opcao in
(...)
2) echo “Digite a linha a incluir:”
echo “exemplo: Manoel Joaquim \(85\) 3443-3443”
read nova_linha
echo $nova_linha >> $AGENDA
;;
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19

Continue navegando