Imprimer STDOUT au milieu de 2 tuyaux dans Solaris (bash)

http://www.webdesignerdepot.com/rss.htm

J’ai le même problème. Cette commande:

./somescript.sh> ../log/scriptlog.log

nécessite la sortie d’une commande aller à std out. mais à l’intérieur du script

commande | mailx -s “Subject” [email protected]

Ce que je voudrais faire, c’est quelque chose comme:

commande | tee> / dev / stdout | mailx -s “Subject” [email protected]

Où la sortie de la commande va à stdout (pour être redirigé dans le fichier ..log / scriptlog.log)

et aussi dans stdin pour la commande mailx.

Un moyen de faire ça?

tee envoie déjà à stdout.

 ... | tee -a log/scriptlog.log | ... 
 exec 3>&1 command | tee /dev/fd/3 | mailx ... 

ou, en utilisant la substitution de processus:

 command | tee >(mailx ...) 

Je vais essayer la substitution de processus. Pour clarifier, j’ai un script shell cron’d. L’entrée cron est similaire à: /usr/script/myscript.sh> /usr/log/myscript.log

à l’intérieur du script est une ligne similaire à: command | destinataire mailx -s “sujet”

Étant donné que stdout de ‘command’ est transféré dans la commande mailx, il apparaît dans le fichier journal ‘myscript.log’, mais je le souhaite.

J’ai essayé de le capturer dans une variable, mais les sauts de ligne semblent perdus. Je pourrais utiliser un fichier temporaire, mais j’espérais quelque chose de plus élégant.