如果标准输入有任何输入,则运行另一个命令

如果标准输入有任何输入,则运行另一个命令

如果标准输入上有任何输入,我该如何运行另一个命令

通常用于以下情况:

一些没有正常输出的命令 | ifinput mail -s 'some output' me

答案1

最简单的解决方案是使用文件(如果你敢的话!)。-s开关表示“文件大小不为零”。重定向&>也包括错误(意味着将发送 stdout 和 stderr)。

OUTFILE=/tmp/command.out
some command &> $OUTFILE
[ -s "$OUTFILE" ] && mail -s "subject here" [email protected] < "$OUTFILE"

编辑:glenn jackman 下面的评论包含更好的解决方案。

答案2

一个小技巧read

$ echo 1 | { read -t 0 -N 0 && cat ; } 
1
$ { read -t 0 -N 0 && cat ; } 
$ 

答案3

您还可以创建一个 shell 脚本。该脚本可以首先调用一些命令,将输出重定向到文件,然后从脚本内部调用邮件命令将其发送出去,这实际上是 SamKrieg 所做的,无需创建 shell 脚本。使用脚本的原因可能取决于您是否要将此命令作为 cron 作业或其他东西运行。

相关内容