在Solaris(bash)中的2个管道中间打印STDOUT

时间:2010-10-07 00:53:09

标签: bash unix solaris

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

我有同样的问题。这个命令:

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

要求输出命令转到标准输出。但在剧本里面

命令| mailx -s“Subject”recipient@somedomain.tld

我想做的是:

命令| tee> / dev / stdout | mailx -s“Subject”recipient@somedomain.tld

命令的输出转到stdout(重定向到..log / scriptlog.log文件)

以及mailx命令的stdin。

有什么办法吗?

3 个答案:

答案 0 :(得分:1)

tee已经发送到stdout。

... | tee -a log/scriptlog.log | ...

答案 1 :(得分:1)

exec 3>&1
command | tee /dev/fd/3 | mailx ...

或使用流程替换:

command | tee >(mailx ...)

答案 2 :(得分:0)

我会尝试进行替换。为了澄清,我有一个cron'd shell脚本。 cron条目类似于: /usr/script/myscript.sh> /usr/log/myscript.log

脚本内的

是一行类似于: 命令| mailx -s“主题”收件人

由于来自'command'的stdout被传递到mailx命令,它确实出现在日志文件'myscript.log'中,但我想要它。

我尝试将其捕获到一个变量中,但换行似乎是丢失的。我可以使用临时文件,但我希望有更优雅的东西。