Bones,

Jo per capturar la sortida i el codi de retorn de la comanda normalment
utilitzo variables i subshells.
Si no m'equivoco ni en shell ni en bash hi ha la paraula clau "return", per
això es fa un "echo" o es captura el codi de retorn en funció de les teves
necessitats, perquè et podria interessar més formatejar la sortida del
subshell (per exemple, amb sed o awk) abans d'enviar-la cap al fitxer de
log:

#!/bin/sh
LaFuncio ()
{
        ls /inexistent
        Resultat=$?
        echo $Resultat
}
sortida=$(LaFuncio 2>&1)
Resultat=$?
# aquí pots treballar la sortida, per exemple
echo $sortida | sed -e 's/ /\t/g'  | tee -a /var/log/labitacola.log
if [ "$Resultat" != "0" ] ; then echo "Problema" ; fi
exit $Resultat


Salut, bon dissabte.


On Saturday, 17 October 2015, Narcis Garcia <informat...@actiu.net> wrote:

> Em sembla que les matrius com PIPESTATUS només són suportades per Bash,
> i no per altres intèrprets de ShellScript. Intento fer programets el més
> portables possibles.
>
> Un exemple de programet per qual recollir el codi de sortida:
>
> #!/bin/sh
> LaFuncio ()
> {
>         ls /inexistent
>         Resultat=$?
>         return $Resultat
> }
> LaFuncio 2>&1 | tee -a /var/log/labitacola.log
> Resultat=$?
> if [ $Resultat -ne 0 ] ; then echo "Problema" ; fi
> exit $Resultat
>
>
> El 17/10/15 a les 11:41, Simó Albert i Beltran ha escrit:
> > Si poguéssim veure el codi del que estas fent podríem opinar amb
> > propietat.
> >
> > Respecte el codi de retorn i la canalització a bash:
> >
> > false | true
> > echo ${PIPESTATUS[0]} ${PIPESTATUS[1]}
> >
> > o bé:
> >
> > set -o pipefail
> > false | true || echo ko
> >
> >
> > Respecte fer una bitàcola (es diu així?), jo acostumo a usar el logger
> > que ja s'ha comentat pots veure'n un exemple a:
> > https://gitlab.com/dtv3/dtv3/blob/master/dtv3#L145
> >
>
>

-- 
--

R. Sicart

Respondre per correu electrònic a