shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] dúvida


From: Jose NIEVIADONSKI
Subject: Re: [shell-script] dúvida
Date: Wed, 12 Feb 2003 08:50:22 -0300

Srs da lista.

Vou tomar a liberdade de responder no lugar do Aurélio pois fui eu que
postei a solução abaixo citada pelo Julio.

Bom, esse tipo de Reconhecimento de Padrão existe no Ksh mas não sei se o
mesmo existe no bash.

É uma coisa que poucos conhecem mas é uma característica muito legal e as
vezes uma mão na roda em várias situações.

Aproveito e coloco aqui o trecho que existe no manual do ksh do HP-UX (Está
em inglês, mas espero que para muitos isso não seja problema. Peço
desculpas ao pessoal que não lê inglês, mas estou sem tempo para realizar a
tradução).

Esses padrões podem ser usados nas seguintes situações:

1. Teste de igualdade e desigualdade de padrões com "=" e "!=" no comando
if usando a forma
if [[ txt = padrao ]] ou if [[ texto != padrão ]] (Essa forma foi usada no
trecho em questão. Observar o uso dos dois colchetes, com um não funciona.

2. Opção do comando case in ... esac

3. Expansão de parâmetros usando as formas ${var:#padrão}, ${var:##padrão},
${var:%padrão} e ${var:%%padrão}.

4. Nos comandos quando se realiza a expansão de nomes dos arquivos, por
exemplo ls !(a|b)*.dat (remove todos os arquivos *.dat, exceto os que
começam com a ou b).


  File Name Generation
      Following substitution, each command word is processed as a pattern
      for file name expansion unless the -f option has been set.  The form
      of the patterns is the Pattern Matching Notation defined by
regexp(5).
      The word is replaced with sorted file names matching the pattern.  If
      no file name is found that matches the pattern, the word is left
      unchanged.
      In addition to the notation described in regexp(5), ksh recognizes
      composite patterns made up of one or more pattern lists separated
from
      each other with a |.  Composite patterns can be formed with one or
      more of the following:
           ?(pattern-list)     Optionally matches any one of the given
                               patterns.

           *(pattern-list)     Matches zero or more occurrences of the
given
                               patterns.

           +(pattern-list)     Matches one or more occurrences of the given
                               patterns.

           @(pattern-list)     Matches exactly one of the given patterns.

           !(pattern-list)     Matches anything, except one of the given
                               patterns.

Abraços a todos da lista

Analista de Sistemas Consultor
HSBC Bank Brasil S.A. - Banco Múltiplo
Treinamento de informática
Fone : 41 340-5378 - Fax : 41 340-5011





      Para: address@hidden
      cc:
      cco:  Jose NIEVIADONSKI/HBBR/HSBC
      Assunto:    [shell-script] dúvida
Julio Cezar Neves - DATAPREVRJ <address@hidden>

11/02/2003 06:42 PM
Favor responder a shell-script            <font size=-1></font>
Grande Aurelio,
teus scripts de data estavam fantásticos! Mas estou com uma dúvida, tirada
da lista, que não estou entendendo. Veja o código abaixo:

if [[ "$1" != +([0-9]) ]]
then
echo "Cara! você deve por um número como parâmetro"
exit 8
fi
echo "Legal! voce pôs um número como parâmetro"

Qual a função do + e dos ()? Será q vc sabe? Já procurei nos man do ksh e
do
bash e não encontrei nada convincente.
[]s,
Julio




This E-mail confidential. It may also be legally privileged. If you are not the 
addressee you may not copy, forward, disclose or use any part of it. If you 
have received this message in error, please delete it and all copies from your 
system and notify the sender immediately by return E-mail.
Internet communications cannot be guaranteed to be timely, secure, error or 
virus-free. The sender does not accept liability for any errors or omissions.
 
Esta mensagem pode conter informação confidencial e/ou privilegiada. Se você 
não for o destinatário ou a pessoa autorizada a receber esta mensagem, não pode 
usar, copiar ou divulgar as informações nela contidas ou tomar qualquer ação 
baseada nessas informações. Se você recebeu esta mensagem por engano, por favor 
avise imediatamente o remetente, respondendo o e-mail e em seguida apague-o.
Comunicações pela Internet não podem ser garantidas quanto à segurança ou 
inexistência de erros, ou contendo vírus. O remetente por esta razão não aceita 
responsabilidade por qualquer erro ou omissão no contexto da mensagem 
decorrente da transmissão via Internet.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]