KSH - 检查 return 中各个命令的代码 find -maxdepth 0 $path -type f -mtime +$daysold -exec rm -fv {}\;

KSH - Check return code on individual commands in find -maxdepth 0 $path -type f -mtime +$daysold -exec rm -fv {}\;

我正在尝试弄清楚如何在以下语句中检查 find 命令和 rm -fv 命令上的 return 代码:

find -maxdepth 0 $path -type f -mtime +$daysold -exec rm -fv {}\;

基本上,如果发生错误,我想知道它是否发生在 findrm 命令中,并通过电子邮件将该信息转发给我们的开发人员。我该怎么做?我明白如果我查看 $?,它只会将语句作为一个整体来查看。

find 使用 -exec 命令的 return 代码作为谓词:如果命令成功 - 文件匹配。

因此,您可以通过使用 !:

否定谓词,使 find 打印所有 rm -fv 命令失败的文件
find -maxdepth 0 $path -type f -mtime +$daysold ! -exec rm -fv {} \; -print

(您必须添加 -print,因为 -exec 的存在会覆盖默认的隐式 -print。)

您可以将 find 的输出重定向到一个文件中,如果该文件不为空,那么您可以相应地通过电子邮件发送它。