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

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

Re: [shell-script] stderr/stdout


From: Fernando Mercês
Subject: Re: [shell-script] stderr/stdout
Date: Thu, 1 Sep 2011 10:32:53 -0300

Entendi. Eu não sabia dessa, mas me parece coisa velha, ainda mais se
tratando do Solaris 5.9. É bem antigo.

Você tem certeza que não tem bash em todas as máquinas? Eu entendo este
"medo" mas ainda não vi um UNIX sem bash atualmente. Bem, é só um
sentimento.

O which retorna erro? Aqui no Linux não. Então daria pra fazer direto:

---
if which cmd > /dev/null; then
        echo ok
else
        echo not found
fi
---

Perceba que você não precisa de uma variável pra testar no if, já que ele
testa comandos. ;-)

Abraço!

Att,

Fernando Mercês
Linux Registered User #432779
www.mentebinaria.com.br
softwarelivre-rj.org
@MenteBinaria
------------------------------------
Participe do I Hack'n Rio
                 hacknrio.org
------------------------------------


2011/9/1 Rodrigo R. Martins <address@hidden>

> **
>
>
> Fala Fernando, blz?
>
> Não, cara... na verdade eu encontrei uma literatura que me ajudou um pouco
> a
> entender o que de fato está acontecendo[1]:
>
> "On the other hand, some shells, such as Solaris or FreeBSD /bin/sh, warn
> about missing programs before performing redirections. Therefore, to
> silently check whether a program exists, it is necessary to perform
> redirections on a subshell:
>
> $ /bin/sh -c 'nosuch 2>/dev/null'
> nosuch: not found
> $ /bin/sh -c '(nosuch) 2>/dev/null'
> $ bash -c 'nosuch 2>/dev/null'
>
> "
>
> Ou seja... entendo que o shell tenta emitir a mensagem de erro/warning
> antes
> mesmo de repassar a saída pro bendito file descriptior...
>
> Já fiz alguns testes e ainda continuo, mas não obtive sucesso... Olha só...
> o objetivo maior neste momento é evitar que no meu script emita mensagens
> de
> erro quando não achar um binário qualquer. Estou usando Sun/Solaris 5.9.
>
> testing=`which command_testing 2>/dev/null`
>
> if [ -n "$testing" ]; then
> command_testing -xpto
> else
> echo "[!] Command testing was not found"
> fi
>
> Com bash funciona de boa, mas eu não posso contar que em todas as máquinas
> vai existir o bash instalado...
>
> Acontece que não há nada que eu consiga fazer pra evitar os warnings na
> tela... enfim.
>
> Abraços,
>
> Rodrigo Martins
>
> [1] http://www.gnu.org/s/hello/manual/autoconf/File-Descriptors.html
>
> Em 1 de setembro de 2011 17:27, Fernando Mercês <address@hidden
> >escreveu:
>
>
> > Estranho... o número que precede o ">" é o file descriptor que você quer
> > redirecionar. Será que esse shell (que deve ser o sh) não está escrevendo
> > tanto em stderr quanto em stdout? Tenta:
> >
> > $ svcs 2>&1 > /dev/null
> >
> > Abraço.
> >
> > Att,
> >
> > Fernando Mercês
> > Linux Registered User #432779
> > www.mentebinaria.com.br
> > softwarelivre-rj.org
> > @MenteBinaria
> > ------------------------------------
> > Participe do I Hack'n Rio
> > hacknrio.org
> > ------------------------------------
> >
> >
> > 2011/9/1 Rodrigo R. Martins <address@hidden>
> >
> > > **
> > >
> > >
> > > Pessoal,
> > >
> > > Estou fazendo alguns testes com Solaris, e estou tendo alguns problemas
> > > para
> > > canalizar mensagens de erros para evitar poluir a tela caso algo saia
> > > diferente do esperado.
> > >
> > > Notei que qualquer comando ou sintaxe que não exista, ele obviamente
> > > reclama
> > > com uma mensagem de erro mas eu não conseguir achar um meio de
> controlar.
> > > Exemplo:
> > >
> > > # svcs
> > > svcs: not found
> > >
> > > # svcs 2>/dev/null
> > > svcs: not found
> > >
> > > Se eu tentar com bash ou kornshell, tudo funciona perfeitamente.
> Exemplo:
> > >
> > > bash-2.05# svcs
> > > bash: svcs: command not found
> > >
> > > bash-2.05# svcs 2>/dev/null
> > >
> > > Saberiam me dizer o porque?
> > >
> > > Desde já agradeço.
> > >
> > > Abraços,
> > >
> > > Rodrigo
> > >
> > > [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]
>
>  
>


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



reply via email to

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