Baixe o app para aproveitar ainda mais
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
Compartilhar