Reinaldo se voce colocar na linha de comando: $ `sh -x hora 00:00` terá como resultado hora valida, que seria o equivalente a: 24:00, mas se desejar acrecentar 24:00 e só fazer as alterações sequintes:
#!/bin/bash Hora=$1 # A hora começa com 00 à 19 ou de 20 à 23 e termina de :00 à 59 #!/bin/bash Hora=$1 if [[ $Hora =~ ([01][0-9]|2[0-3]):[0-5][0-9]|24:00 ]] then echo Hora Certa else echo Hora invalida fi ################################################ ou #!/bin/bash H=$1 [[ $H = [01][0-9]:[0-5][0-9] || $H = 23:[0-5][0-9] || $H = 24:00 ]] && echo Hora valida || echo Hora invalida # O problema é que: 00:00 continua sendo hora valida. ############################################# --- Em seg, 15/9/08, jimmy <[EMAIL PROTECTED]> escreveu: De: jimmy <[EMAIL PROTECTED]> Assunto: Re: [shell-script] Dúvida "Script que marca hora"? Para: [email protected] Data: Segunda-feira, 15 de Setembro de 2008, 13:24 testei o seu escript, não conhecia o uso na prática do '=~', achava que só existia no perl e similares; bom a única alteração que fiz foi na linha: if [[ $Hora =~ "([01][0-9]| 2[0-3]):[ 0-5][0-9] " ]] fechei a string de comparação entre aspas, e rodei os seus testes: $ sh -x hora 23:00 + Hora=23:00 + [[ 23:00 =~ ([01][0-9]|2[ 0-3]):[0- 5][0-9] ]] + echo Hora Certa Hora Certa $ sh -x hora 23:59 + Hora=23:59 + [[ 23:59 =~ ([01][0-9]|2[ 0-3]):[0- 5][0-9] ]] + echo Hora Certa Hora Certa $ sh -x hora 24:00 + Hora=24:00 + [[ 24:00 =~ ([01][0-9]|2[ 0-3]):[0- 5][0-9] ]] + echo Hora Invalida Hora Invalida On Sat, Sep 13, 2008 at 09:51:24PM -0700, Klaus Jurgen Friedrich wrote: > 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] > > > ------------ --------- --------- ------ > > ------------ --------- --------- --------- --------- --------- - > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > ------------ --------- --------- --------- --------- --------- - > Sair da lista: shell-script- unsubscribe@ yahoogrupos. com.br > ------------ --------- --------- --------- --------- --------- - > Esta lista é moderada de acordo com o previsto em http://www.listas- > discussao. cjb.net > ------------ --------- --------- --------- --------- --------- - > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user- groups.programmi ng.shell. brazil > > Links do Yahoo! Grupos > ____________ _________ _________ _________ _________ _________ _ 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]
