Sortie standard stockée dans variable sans rc
Bonjour.
J'utilise une fonction dans pas mal de mes quelques scripts :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #gestion d'erreurs et logs
launch() {
cmd=$1
purpose=$2
redirection=$3
echo "#$purpose" | tee -a $log_file
if [ $redirection ]
then
#cas ou on a une redirection dans la commande
#on ne peut pas doublement rediriger
#donc on ne log pas les erreurs eventuelles
if [ $redirection = o ]
then
echo $cmd | tee -a $log_file
eval "$cmd"
else
#cas ou le 3eme argument est mal saisi
echo "ERREUR launch : verifier arguments" | tee -a $log_ file
exit
fi
else
#cas standard
echo $cmd | tee -a $log_file && err=`eval "$cmd 2>&1"`
if [ $? -ne 0 ]
then
echo "ERREUR $? : $err" | tee -a $log_file
exit
fi
echo -e $err
fi
} |
Je me suis récemment rendu compte que je n'avais pas la sortie standard.
On peut voir dans le cas standard que je récupère le résultat dans err grâce à:
Code:
err=`eval "$cmd 2>&1"
Si par la suite, je fais
C'est pour qu'effectivement apparaisse la sortie standard.
Seulement, les retours à la ligne disparaissent de cet affichage.
Où est ce qu'ils ont disparu ?
Merci d'avance