[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.
- Re: [shell-script] dúvida,
Jose NIEVIADONSKI <=