Buscar

Aula08 TestesEmArquivos Case

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

Continue navegando