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

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

Re: Funções com comando tee


From: miguelcm86
Subject: Re: Funções com comando tee
Date: Tue, 30 Oct 2007 01:08:31 -0000
User-agent: eGroups-EW/0.82

Pensei que houvesse uma solução mais fácil.. estou a testar, mas além
de não perceber muito bem como é que isso funciona, eu chamo todas
pipesatus [0] e [1] e [2] e estão todos a 0.
aqui está o codigo:

#! /bin/bash
Install(){
echo "testes que só fazem perder tempo"
return 34
}



if ( Install | tee teste1.rep )         ##executa as funções e guarda os output
            then echo "bem"
                 echo $PIPESTATUS[0] $PIPESTATUS[1]
            else echo "mal"
fi      
 echo $PIPESTATUS[1] $PIPESTATUS[2]

exit 0

por mais que altere o 34 para o 0 e outro valor o output é sempre este:
miguel@linux-rula:~$ ./teste1.sh
testes que só fazem perder tempo
bem
0[1] 0[2]
0[1] 0[2]
miguel@linux-rula:~$ 



isto assim diz que está a receber demasiados arguementos:
if [ `Install | tee teste1.rep` ] 

output:
./teste1.sh: line 10: [: demasiados argumentos





--- Em address@hidden, "Tiago Barcellos Peczenyj"
<tiago.peczenyj@...> escreveu
>
> On 10/29/07, miguelcm86 <miguelcm86@...> wrote:
> >
> > olá pessoal
> >
> >  o que se passa é simples
> >
> >  -Tenho que chamar uma função install, guardar todo o seu output
dentro
> >  de um arquivo e saber qual o return que recebo da função install.
> >  Estou a fazer desta maneira que está errada, queria saber como
resolvo.
> >
> >  Install(){
> >  ......
> >  return variavel
> >  }
> >
> >  if [ Install | tee install.rep ]
> >  then echo "return = 0"
> >  else echo "return = 1"
> >  fi
> >
> >  uso o comando tee porque quero no install.rep todo o output no
ficheiro.
> >
> 
> Miguel,
> 
> a palavra "return" em uma função é semelhante ao exit de um script,
> porém interrompe apenas a função, e o seu resultado pode ser lido pela
> variavel $? e pode ser usado nas operações && e ||
> 
> function xxx() {
>    return 12
> }
> 
> $ xxx
> 
> $ echo $?
> 12
> 
> Agora, quando vc esta trabalhando com pipes, esse resultado é
> armazenado em um vetor chamado PIPESTATUS, que guarda o retorno de
> cada processo
> 
> $ xxx | tee supimpa
> 
> visitante@fred ~
> $ echo ${PIPESTATUS[@]}
> 12 0
> 
> certo, mano ?
> 
> Existem outras alternativas como usar sinais, mas por enquanto deve
bastar ;-)
> 
> -- 
> Tiago B Peczenyj
> Linux User #405772
> 
> http://peczenyj.blogspot.com/
>




reply via email to

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