2010-10-07 18 views
0

http://www.webdesignerdepot.com/rss.htmSTDOUT au milieu de 2 tuyaux dans Solaris (bash)

J'ai la même question. Cette commande:

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

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

commande | mailx de « Objet » [email protected]~~V~~singular~~3rd

ce que je voudrais faire est quelque chose comme:

commande

| tee>/dev/stdout | mailx de « Objet » [email protected]~~V~~singular~~3rd

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

et aussi dans stdin pour le mailx commander.

Une façon de faire?

Répondre

1

tee envoie déjà à stdout.

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

ou, en utilisant la substitution de processus:

command | tee >(mailx ...) 
0

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

dans le script est une ligne semblable à: commande | mailx -s Destinataire "Sujet"

Depuis que la commande 'stdout' est redirigée vers la commande mailx, elle 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 être perdus de cette façon. Je pourrais utiliser un fichier temporaire, mais j'espérais quelque chose de plus élégant.