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

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

Re: [shell-script] Dúvida na Sentença do IF


From: Jefferson Aranha
Subject: Re: [shell-script] Dúvida na Sentença do IF
Date: Fri, 3 Aug 2012 08:04:08 -0300

Muito obrigado a todos a dúvida foi sanda completamente =D

Em 2 de agosto de 2012 23:21, Julio C. Neves <address@hidden>escreveu:

> Jefferson, vc fez:
> if [ `grep -e "accessed" -e "acessado" "$ARQ_TEMP"` ]
>
> No shell, a função do if é testar uma instrução e o [...] é a instrução
> test que esta sendo testada. O problema é que o test é para testar
> arquivos, numéricos e cadeias, mas nunca instrução.
>
> A forma correta de fazer isso seria:
>
> if grep -q ...
> then
>     cmds se grep for bem sucedido.
> else
>     cmds caso grep mal sucedido
> fi
>
> Não entendi bem o que vc queria fazer com seu grep, já que a opção -e é
> muito pouco usada. Se vc deseja testar uma condição *ou* outra, é melhor
> usar uma construção do tipo:
>
> grep -E "accessed|acessado"
>
> o | significando OU e
> o -E para usar reg exp expandida (por causa do OU)
>
> Mudando de assunto, é muito comum (e isso é o que vc mais vê na internet)
> as pessoas fazerem:
>
> grep ...
> retcod=$?
> if [ $retcod -eq 0 ]
> then
>     cmds se grep for bem sucedido.
> else
>     cmds caso grep mal sucedido
> fi
>
> Isso é feito por pessoas que não procuram estudar shell. A função do if é
> testar direto um cmd, baseado em seu código de retorno. Experimente fazer:
>
> $ Usu=root
> $ if grep -q ^$Usu: /etc/passwd
> then
>     echo Usuário cadastrado
> else
>     echo Usuário ñ cadastrado
> fi
> Usuário cadastrado
> $ Usu=Ximelesquete
> $ if grep -q ^$Usu: /etc/passwd
> then
>     echo Usuário cadastrado
> else
>     echo Usuário ñ cadastrado
> fi
> Usuário ñ cadastrado
>
> Abcs,
> Julio
>
> *
> *
>
>
>
> Em 2 de agosto de 2012 13:08, Jefferson Aranha
> <address@hidden>escreveu:
>
> > **
> >
> >
> > Pessoal estou com uma dúvida, ao montar uma sentença IF, recebo a
> > menssagem de erro: line 49: [: too many arguments
> >
> > if [ `grep -e "accessed" -e "acessado" "$ARQ_TEMP"` ]; then
> > faz algo
> > fi
> >
> > Suponhamos que a variável $ARQ_TEMP possui o valor de um dir que aponta
> > paraum arquivo e que ao se dar o comando: grep -e "accessed" -e
> "acessado"
> > "$ARQ_TEMP"
> > eu tenho o retorno da variavél "$?" igual a 0 ou seja o comando funciona.
> > Porque dentro do if não?
> >
> > Obrigado.
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
>
> [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: address@hidden
> ---------------------------------------------------------------------
> 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.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
>
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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