Ecrire dans STDERR sans redirection ? [ksh] - Shell/Batch - Programmation
Marsh Posté le 21-10-2005 à 15:53:02
Bon ben j'ai trouvé entre temps ... je vous donne la (une) solution: utiliser print -u# ou #=output descriptor
Par défaut, print écrit sur STDOUT, donc #1
root@admhost:[/root]# print toto |
Par contre en lui spécifiant -u2 il écrit sur #2 (STDERR)
root@admhost:[/root]# print -u2 toto |
Bon weekend !
Marsh Posté le 21-10-2005 à 17:20:43
Met des "{ ... }" autour de ton boc, et redirige le tout vers stderr :
/home/nicolas $ echo toto; echo tata > /dev/null |
Marsh Posté le 21-10-2005 à 18:16:52
Le problème est que j'ai besoin de séparer les erreurs et les outputs dans la boucle do/done. Mais dans cette même boucle je veux aussi mettre des balises dans les deux fichiers. Le print -u2 me permet de le faire.
Marsh Posté le 21-10-2005 à 14:31:32
Salut,
Connaissez-vous un moyen permettant d'écrire directement dans stderr mais sans redirection (une option magique d'echo ou de printf peut être) ?
J'ai un script qui en gros ressemble à ça:
LOGF=/root/$0.log
ERRF=/root/$0.err
[ -f $ERRF ] && rm $ERRF ; [ -f $LOGF && ] rm $LOGF
for host in `cat hosts.list`
do
[...] qques commandes ping, scp, ssh sur $host [...]
done > $LOGF 2>$ERRF
Rien de bien particulier en fait. Mais j'aimerai dans la boucle do/done écrire des balises du genre "$host BEGIN" et "$host END" dans les deux fichiers log.
Une idée lumiseuse pour éviter d'avoir à rediriger le STDOUT et STDERR (cmd >$LOGF 2>$ERRF) de chaque commande de la boucle ?
Merci d'avance
Message édité par Deadlock le 21-10-2005 à 14:32:00
---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.