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

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

Re: [shell-script] teste retorno comando


From: hpfn
Subject: Re: [shell-script] teste retorno comando
Date: Sun, 14 Dec 2014 10:23:32 -0200

é, tem o PIPESTATUS no seu livro. mas não lembrei dele.

estou usando isso:

who | grep -q usuario || /usr/sbin/pm-suspend && mail usuario <<< "pc suspend"

adotei a opção '-q' do grep.

obrigado pela comentário detalhado.

abraço,

On Sat, 13 Dec 2014 19:37:05 -0200
"'Julio C. Neves' address@hidden [shell-script]" <address@hidden> wrote:

> Fala Herbert,
> acho que vc está misturando um monte de conceitos.
> 
> 1 - Toda vez que vejo um if [ $? -eq ... ], desconfio, quase com certeza
> que o script está muito mal escrito.
> 
> A função do if é testar instrução, então não tem por que c executar a
> instruçõ e testar o seu retorno. Otimize isso assim:
> 
> if who | grep usuario &> /dev/null
> then
>     echo "logado"
> else
>     echo "não logado"
> fi
> 
> Mas o erro não está aí, estou só te mostrando como otimizar e programar
> limpo.
> 
> 2 - &> só passou a funcionar no bash 4.0. Se vc estiver abaixo dessa
> versão, já era!
> 
> 3 - Existe um vetor do sistema que te devolve o $? de cada um dos
> componentes de uma linha com pipes (|) é o PIPESTATUS, veja:
> 
> $ who | grep usuario &> /dev/null
> $ echo ${PIPESTATUS[@]}
> 0 1
> 
> Isso significa que o who foi bem sucedido e o grep deu zebra.
> 
> 4 - Como o grep não dá erro caso não case com ninguém, basta mandar a saída
> primária para /dev/null, ou usar a facilidade que o próprio grep oferece:
> 
> $ who | grep -q usuario
> 
> 
> Abcs,
> Julio
> *@juliobash*
> *Próximos cursos de Shell*
> *Cidade         Local Período*
> *Rio de Janeiro EDX <http://edx.srv.br/> 09 a 13/03/15*
> *São Paulo 4Linux
> <http://www.4linux.com.br/cursos/programacao-em-shell-script> 24 a 28/11/14*
> Dou treinamento de *Shell* em qualquer cidade.
> Para mais detalhes, me mande um e-mail <address@hidden>.
> 
> 
> Em 13 de dezembro de 2014 14:12, Herbert Parentes Fortes Neto (hpfn)
> address@hidden [shell-script] <address@hidden> escreveu:
> 
> >
> >
> > olá,
> >
> > estou com uma dúvida bem básica. dá até vergonha de dizer.
> >
> > se faço: who | grep usuario &> /dev/null || echo "nao logado"
> > tenho o retorno esperado.
> >
> > mas isso não está funcionando:
> >
> > who | grep usuario &> /dev/null
> >
> > if [ $? ] # tanto faz o valor de $? - 0 ou 1. estou sempre logado
> > then
> > echo "logado"
> > else
> > echo "não logado"
> > fi
> >
> > o que está errado ?
> >
> > abraço,
> > --
> > Herbert Parentes Fortes Neto (hpfn)
> >  
> >


-- 
Herbert Parentes Fortes Neto (hpfn)


reply via email to

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