[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Dúvida na Sentença do IF
From: |
Julio C. Neves |
Subject: |
Re: [shell-script] Dúvida na Sentença do IF |
Date: |
Thu, 2 Aug 2012 23:21:48 -0300 |
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]
Re: [shell-script] Dúvida na Sentença do IF, miranda, 2012/08/02
Re: [shell-script] Dúvida na Sentença do IF,
Julio C. Neves <=