如何使用 tee 命令捕获失败命令的错误和消息

如何使用 tee 命令捕获失败命令的错误和消息

我想捕获错误并将其与自定义消息一起写入日志文件。

考虑命令:

$(find $val -type f -delete) || echo "error in deleting files" |tee -a log.txt

该命令在 log.txt 文件中写入以下行

error in deleting files

但我还想将 find 命令的错误与我的自定义消息一起打印到日志文件中,以便日志文件看起来像这样:

find: `/home/temp': No such file or directory
error in deleting files

答案1

您需要更改那里的运算符优先级,并将find || echo命令分组到重定向到管道的复合命令中tee

{ $(find $val -type f -delete) || echo "error in deleting files"; } 2>&1 |tee -a log.txt

或者也:

($(find $val -type f -delete) || echo "error in deleting files") 2>&1 |tee -a log.txt

重定向2>&1用于将find的错误消息重定向到由 读取的管道tee,而echo的输出已经自然地进入该管道。

相关内容