我想捕获错误并将其与自定义消息一起写入日志文件。
考虑命令:
$(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
的输出已经自然地进入该管道。