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

Re: [deb-cat] logsave mes net



La cosa està en què la funció produeix molta informació textual (tant
stdout com stderr) per desar en una bitàcola, que és per això que es fa
servir el "tee". Sinó, seria ben senzill emetre només el numeret de sortida.
return sempre ha funcionat a les funcions.

Provisionalment, estic utilitzant un fitxer normal i corrent, només per
aquests casos:

#!/bin/sh
LaFuncio ()
{
	ls /inexistent
	Resultat=$?
	echo $Resultat > /tmp/LaFuncio.resultat.num
	return $Resultat
}
LaFuncio 2>&1 | tee -a /var/log/labitacola.log
Resultat=$(cat /tmp/LaFuncio.resultat.num)
rm /tmp/LaFuncio.resultat.num
if [ $Resultat -ne 0 ] ; then echo "Problema" ; fi
exit $Resultat


El 17/10/15 a les 14:09, Roger Sicart ha escrit:
> 
> 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 <informatica@actiu.net
> <mailto:informatica@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
> 


Reply to: