Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação para Servidores Aula 08 Sumário • Testes em arquivos; • Comando case; • Exercícios. 2 Testes em arquivos • Alguns operadores para teste em arquivos: -e : arquivo existe; -d : é um diretório; -f : é um arquivo comum (nem diretório nem disposiGvo); -s : não tem tamanho zero; -r : tem permissão de leitura; -w : tem permissão de escrita; -x : tem permissão de execução ou é um diretório onde se pode realizar uma pesquisa; 3 Testes em arquivos • Exemplo 1: if [ -f $arq ]; then echo "$arq é um arquivo comum" else echo "$arq não existe ou não é comum" fi • Exemplo 2: if [ ! -f $arq ]; then echo "$arq não existe ou não é comum" exit 1; fi 4 Comando case • Imaginem que precisamos verificar o valor de uma variável dentre muitas possibilidades... • Poderíamos escrever uma série de encadeamento de testes if e elif. Exemplo: if [ "$x" = "2" ] || [ "$x" = "3"); then echo dois ou três elif [ "$x" = "4" ] || [ "$x" = "5"); then echo quatro ou cinco else echo outra coisa fi 5 Comando case • Porém, o shell possui a construção case que oferece a funcionalidade de casamento de padrões. Sua sintaxe é: case "$variavel" in "$condicao1") comando... ;; "$condicao2") comando... ;; esac 6 Comando case • Porém, o shell possui a construção case que oferece a funcionalidade de casamento de padrões. Sua sintaxe é: case "$variavel" in "$condicao1") comando... ;; "$condicao2") comando... ;; esac 7 O fecha parênteses termina a condição Comando case • Porém, o shell possui a construção case que oferece a funcionalidade de casamento de padrões. Sua sintaxe é: case "$variavel" in "condicao1") comando... ;; "condicao2") comando... ;; esac 8 O duplo ponto-‐e-‐vírgula finaliza uma opção Comando case • Exemplo 1 de uGlização do case: case "$aquitetura" in i386) echo "máquina 80386" ;; i486) echo "máquina 80486" ;; i586) echo "máquina Pentium" ;; i686) echo "máquina Pentium2+" ;; *) echo "outro tipo de maquina" ;; esac 9 Comando case • Exemplo 2 de uGlização do case: read -p "digite x: " x case "$x" in "2" | "3") echo dois ou três ;; "4" | "5") echo quatro ou cinco ;; *) echo outra coisa ;; esac 10 Comando case • Exemplo 2 de uGlização do case: read -p "digite x: " x case "$x" in "2" | "3") echo dois ou três ;; "4" | "5") echo quatro ou cinco ;; *) echo outra coisa ;; esac 11 A barra verGcal funciona como OU Exercícios • Escreva scripts para: 1. Receber por parâmetro o número do dia da semana e imprimir o seu respecGvo nome por extenso. Número 1 para domingo, 2 para segunda etc. Caso o número digitado seja menor do que 1 ou maior do que 7, exibir a mensagem Dia da semana inválido". USE case 2. Ler dois números e o código de uma operação (“a”, “s”, “m”, ”d”, respecGvamente adição, subtração, mulGplicação e divisão). USANDO case, imprimir o resultado da operação escolhida efetuada sobre os números lidos. 12 Exercícios 3. Receber por parâmetro o nome de um arquivo e exibir seu conteúdo na tela. Antes de exibir, o script deve: • Verificar se o arquivo existe. – Em caso negaGvo, informa isso ao usuário e termina o script; • Verificar se o arquivo não é um diretório; – Se for diretório, informa isso ao usuário e termina o script; • Verificar se possui permissão para leitura; – Em caso negaGvo, informa isso ao usuário e termina o script; • Se todas as respostas forem afirmaGvas, exibe o conteúdo do arquivo na tela; 13 Leitura adicional • Leitura do capítulo 6.2.4 e 6.3 do livro: “Classic Shell ScripGng” 14 Próxima aula... • Estruturas de repeGção: for, while e until; • Comando shift; • Exercícios. 15
Compartilhar