在管道Perl执行中捕获tee的论点

时间:2015-06-22 14:32:37

标签: perl unix

如何捕获管道命令的参数?

我用:

arg_filename

如何在my_script.pl中获取my_script.pl的值?

CONTEXT
我需要在tee最后发送的邮件中发送此文件名 我需要使用my_script.pl因为我们在print内部使用的标准日志记录中转储了大量输出,但我们在STDOUTSTDERR上{{1}}了更多相关内容。
此脚本导入并使用无法编辑的其他专有库。但他们也生成日志。

2 个答案:

答案 0 :(得分:3)

简短的回答是 - 你做不到。

tee是一个独立的过程,它有自己的参数。无法从该进程访问这些参数。 (好吧,我想你可以运行ps或者什么)。

tee的要点是将STDOUT写入日志文件,并将其余内容传递给“管道”。 (如果没有别的话,会导致打印)。

您可能要做的是在perl脚本中实现某种方式的日志记录,其中tee的核心功能通过在STDOUT和指定的日志文件上打印一行来复制。

答案 1 :(得分:0)

如果我必须"作弊",我可能会尝试类似于:

#!/bin/sh
MYLOG=/tmp/logfile
export MYLOG
perl my_script.pl -some_args  |  tee $MYLOG

也就是说,在调用teeperl之前,请获取tee文件的名称。其他人的答案都更正确;我只提到这个作为对策。