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 10:08:24 -0300

*sanada.

Em 3 de agosto de 2012 08:04, Jefferson Aranha
<address@hidden>escreveu:

> 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]