[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)
- Re: [shell-script] teste retorno comando, (continued)
- Re: [shell-script] teste retorno comando, Paulo Bettega, 2014/12/13
- Re: [shell-script] teste retorno comando, Julio C. Neves, 2014/12/13
- Re: [shell-script] teste retorno comando, Jonathan Lessa, 2014/12/13
- Re: [shell-script] teste retorno comando, Julio C. Neves, 2014/12/13
- Re: [shell-script] teste retorno comando, Jonathan Lessa, 2014/12/13
- Re: [Bulk] Re: [shell-script] teste retorno comando, Sidney Souza, 2014/12/13
- Re: [Bulk] Re: [shell-script] teste retorno comando, Paulo Bettega, 2014/12/14
- Re: [Bulk] Re: [shell-script] teste retorno comando, Julio C. Neves, 2014/12/14
- Re: [Bulk] Re: [Bulk] Re: [shell-script] teste retorno comando, Sidney Souza, 2014/12/14
Re: [shell-script] teste retorno comando,
hpfn <=