Fala Klaus, Não consegui reproduzir o teu erro. Veja: $ Hora=24:00 $ if [[ $Hora =~ ([01][0-9]|2[0-3]):[0-5][0-9] ]] > then > echo Hora Certa > else > echo Hora Invalida > fi Hora Invalida
Mas já que vc me chamou a atenção, eu descobri uma bobeada minha. Execute o script passando 310:112. Ele validará a hora como certa, pq encontrará a cadeia 10:11 que casará com a expressão regular. Então o correto é colocar âncoras, ficando assim: $ if [[ $Hora =~ ^([01][0-9]|2[0-3]):[0-5][0-9]$ ]] > then > echo Hora Certa > else > echo Hora Invalida > fi -- Abraços, Julio *Em setembro estarei dando um treinamento Shell em São Paulo (em 2 fins de semana). Mais informações: www.4linux.com.br Tel: (11) 2125-4747* 2008/9/14 Klaus Jurgen Friedrich <[EMAIL PROTECTED]> > Eu estou aprendendo programação shell script e estou estudando o livro: > Programação Shell Linux do Julio Cezar Neves. > > Encontrei uma questão que me gerou uma dúvida, que é um programa que > informa > se a hora é valida ou invalida. > > ############################################### > > #!/bin/bash > > Hora=$1 > > # A hora começa com 00 à 19 ou de 20 à 23 e termina de :00 à 59 > if [[ $Hora =~ ([01][0-9]|2[0-3]):[0-5][0-9] ]] > then > echo Hora Certa > else > echo Hora Invalida > fi > > Eu dei o nome de "hora" ao script, olhe o exemplo. > > $ ./hora 23:00 > Hora Certa > > $ ./hora 23:59 > Hora Certa > > Até aqui tudo bem, agora olhem isso. > > $ ./hora 24:00 > Hora Certa > > A hora só deveria começar com 00 e ir até 23, olhem isso. > [01][0-9]|2[0-3] > > Porque quando eu coloquei 24:00 marcou "Hora Certa" se pela expressão só > deveria ir até 23:59 e a meia noite marcar 00:00 ? > > Quando eu coloco de 24:01 em diante marca "Hora Invalida", ai tudo bem, > está dentro da lógica. > > Agradeço antecipadamente a quem se dispor a esclarecer a minha dúvida. > > Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua > cara @ymail.com ou @rocketmail.com. > http://br.new.mail.yahoo.com/addresses > > [As partes desta mensagem que não continham texto foram removidas] > > > -- Abraços, Julio Em setembro estarei dando um treinamento Shell em São Paulo (em 2 fins de semana). Mais informações: www.4linux.com.br Tel: (11) 2125-4747 [As partes desta mensagem que não continham texto foram removidas]
