如果标准input上有任何input,我怎样才能运行另一个命令
常用于这样的情况:
一些没有正常输出的命令| 如果input邮件“一些输出”我
最简单的解决scheme是使用一个文件(如果你敢!)。 -s开关意味着“文件不是零大小”。 &>redirect也包含错误(意味着stdout和stderr将被发送)。
OUTFILE=/tmp/command.out some command &> $OUTFILE [ -s "$OUTFILE" ] && mail -s "subject here" [email protected] < "$OUTFILE"
编辑:glenn jackman下面的评论甚至包含更好的解决scheme。
有一点小小的诡计:
$ echo 1 | { read -t 0 -N 0 && cat ; } 1 $ { read -t 0 -N 0 && cat ; } $
你也可以创build一个shell脚本。 该脚本可以首先调用一些命令,将输出redirect到一个文件,然后从脚本中调用mail命令将其发送出去,这实际上是SamKrieg所做的,而不需要创build一个shell脚本。 脚本的原因可能取决于您是否要将此命令作为cron作业执行或进行操作。