Baixe o app para aproveitar ainda mais
Prévia do material em texto
PROGRAMAÇÃO PARA SERVIDORES Prof. M. Sc. Isac Ferreira isacfernando@gmail.com Roteiro • Funções • Expressões Regulares Funções funcao ( ) { comando1 comando2 comandoN } Exemplo #!/bin/bash function BoasVindas(){ echo -e "\n\nSeja Bem Vindo $1 \n\n" } echo -n "Digite seu nome: " read NOME BoasVindas "$NOME" Exemplo complicado [1/3] #!/bin/bash opcao=true function Pause() { tempo=true while [ $tempo ]; do echo -ne "\nPressione ENTER para prosseguir...“ read tempo done } Exemplo complicado [2/3] function Tabuada(){ if [ -z $1 ] || [ $1 -gt 10 ]; then echo –e "\nTabuada $1 não existe...." return 0 fi if [ $1 == 0 ] || [ $1 == -0 ]; then echo -e "\n\nOperação cancelada...." exit 0 fi echo -e "\nTabuada de $1:" for contador in `seq 1 10` do resultado=`expr $contador \* $1` echo "$1 x $contador = $resultado" done } Exemplo complicado [3/3] while [ $opcao ] do echo -ne "\nInforme a tabuada que deseja visualizar [ 1 a 10] ou 0 para sair: " read opcao Tabuada $opcao Pause clear done De forma Organizada... Declaração de Variáveis Globais Área de Especificações das Funções Corpo do Programa Expressões Regulares Expressão regular é um método formal de especificar um padrão de texto. É uma composição de símbolos, caracteres com funções especiais que, agrupados entre si e com caracteres literais, formam uma sequência, uma expressão. Essa expressão é interpretada como uma regra, que indicará sucesso se uma entrada de dados qualquer casar com essa regra, ou seja, obedecer exatamente a todas as suas condições. Para que servem? • Ditester algo abrangente de forma específica; • [rgp]ato • Validar padrões como: • Data, horário, número IP, nome de pessoa, email, telefon, RG, CPF, cartão de crédito, começo e fim de linha Metacaracteres Metacaracter Nome . Ponto [] Lista [^] Lista Negada ? Opcional * Asterisco + Mais {} Chaves Metacaracter Nome ^ Circunflexo $ Cifrão \b Borda \ Escape | Ou () Grupo \1 Retrovisor Divisão de Metacaracteres • Representantes: Metacaractere Nome Função . Ponto Um caractere qualquer [...] Lista Lista de caracteres permitidos [^...] Lista negada Lista de caracteres proibidos Divisão de Metacaracteres • Quantificadores Metacaractere Nome Função ? Opcional testero ou um * Asterisco testero, um ou mais + Mais Um ou mais {n,m} Chaves De n até m Divisão de Metacaracteres • Âncoras: Metacaractere Nome Função ^ Circunflexo Início de linha $ Cifrão Fim de linha \b Borda Início ou fim de palavra Divisão de Metacaracteres • Outros: Metacaractere Nome Função \c Escape Torna literal o caractere c | Ou Ou um ou outro (...) Grupo Delimita um grupo \1 ... \9 Retrovisor Texto casado nos grupos 1...9 Metacaracteres especiais • \s - um “white space”, exemplo: um espaço ou tab • \w - um alfanumérico incluindo o '_' • \d - um digíto • \S - qualquer caractere que não seja um 'white-space' • \W - qualquer caractere que não seja um alfanumérico ou '_' • \D - qualquer caractere que não seja um dígito • . - qualquer caractere exceto o newline • \n - new line • \t - tab • \r - carriage return Exemplo 1 Expressão Regular Primeira ocorrência Todas Ocorrências Comentário tr três tristes tigres três tristes tigres Qualquer tr tr|ti|te três tristes tigres três tristes tigres Quaquer tr, ti ou te t(r|i|e) três tristes tigres três tristes tigres Qualquer t seguido de r ou i ou e tr? três tristes tigres três tristes tigres Qualquer t seguido ou não de r t(r|i)? três tristes tigres três tristes tigres Qualquer t seguido ou não de um r ou s+ temos o essencial temos o essencial 1 ou mais s s*i necessita disto necessita disto 0 ou mais s seguido de i Exemplos 2 Expressão Regular Primeira ocorrência Todas Ocorrências Comentário w{3} www.up.pt www.w3.org www.up.pt www.w3.org Qualquer sequência de 3 w w{2,} w.up.pt ww.www.org w.up.pt ww.www.org Qualquer sequência de 2 ou mais w w{1,3} wwww.up.pt ww.www.org wwww.up.pt ww.www.org Qualquer sequência com um número de w maior ou igual a 1 e menor ou igual a 3 \w O resultado foi 75- 80 O resultado foi 75- 80 Qualquer alfanumérico \d O resultado foi 75- 80 O resultado foi 75- 80 Qualquer dígito \D O resultado foi 75- 80 O resultado foi 75- 80 Qualquer não dígito Exemplos 3 Expressão Regular Primeira ocorrência Todas Ocorrências Comentário i 7 O resultado foi 75- 80 O resultado foi 75- 80 Sequencia de i seguido de branco e 7 (lenta)(mente) é \2 \1 Lentamente é mente lenta Lentamente é mente lenta Palavra lentamente seguida de é mente e lenta [aeiou] Aqui temos vogais Aqui temos vogais qualquer um dos caracteres [A-Z0-9] O Resultado foi 75- 80 O Resultado foi 75- 80 entre A e Z ou entre 0 e 9 [^O-Zo-z\-] O Resultado Foi 75- 80 O Resultado Foi 75- 80 Qualquer caracter exceto de O a Z ou de o a z ou - . Estes são Estes são qualquer caractere exceto o newline ^. Estes são Estes são qualquer caractere exceto o newline no início da linha Exemplos 4 Expressão Regular Primeira ocorrência Todas Ocorrências Comentário .$ Estes são Estes são Qualquer caracter exceto o newline, no fim da linha ^$ Uma linha/string vazia plica(do)? Mais complicado complicadíssimo Mais complicado complicadíssimo Sequência plica seguida de do ^(\d{1,3}\.){4}$ 192.168.0.20. 192.168.0.20. 4 Sequências de 1 a 3 dígitos seguidos de . Que compõem uma linha \d[a-z]+ 3,0a,5dc,8abde 3,0a,5dc,8abde Dígito seguido de 1 ou + caracteres de a até z \bdia\b dia, bom-dia! dia, bom-dia! Palavra dia com palavras antes e depois Mais importantes! Metacaracter Nome Posicionamento ^ Circunflexo Representa o começo da linha $ Cifrão Representa o fim da linha [abc] Lista a ou b ou c [a-d] Lista a ou b ou c ou d [^abc] Lista negada Qualquer exceto a, b ou c (esse|aquele) Ou esse ou aquele a{2} Chaves Letra a 2 vetestes a{2,4} chaves a de 2 a 4 vetestes a{2,} Chaves a no mínimo 2 vetestes Mais importantes! Metacaracter Nome Posicionamento a? Opcional Letra a 0 ou mais vetestes a* Asterisco Casa a letra a 0 ou mais a+ Mais Casa a 1 ou mais . Ponto Casa um caractere qualquer .* Curinga Qualquer coisa, tudo ou nada Exercício Validar datas: 13/05/2004 45/04/2003 22/06/1967 02/08/1995 17/09/1068 22/27/1990 12/02/2405 123/02/2000 12/124/2005 06/04/27 13-05-2004 45-04-2003 22-06-1967 17-09-1068 02-08-1995 22-27-1990 12-02-2405 123-02-2000 12-124-2005 06-04-27 13.05.2004 45.04.2003 22.06.1967 17.09.1068 22.27.1990 02.08.1995 12.02.2405 05..02.2000 12.124.2005 06.04.27 Exercício • Validar email: teste teste@teste teste@teste.com teste@teste.com.br teste@teste.br teste.teste@teste teste.teste@teste.co.uk teste@teste.com.com teste@ teste_teste@teste.com teste-man@teste.com.br @teste.com teste-cezar_teste@antena.com.oque
Compartilhar