【问题标题】:KSH - Check return code on individual commands in find -maxdepth 0 $path -type f -mtime +$daysold -exec rm -fv {}\;KSH - 检查 find -maxdepth 0 $path -type f -mtime +$daysold -exec rm -fv {}\ 中各个命令的返回码;
【发布时间】:2016-04-18 16:34:31
【问题描述】:

我试图弄清楚如何在以下语句中检查find 命令和rm -fv 命令的返回码:

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

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

【问题讨论】:

  • 转储 stderr 输出而不是返回码。它包含英文的错误文本。
  • 或将rm -fv 调用转换为一个脚本,该脚本管理来自rm 命令的错误报告,与查找的$? 状态分开。祝你好运。

标签: unix find return ksh rm


【解决方案1】:

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

因此,您可以通过用! 否定谓词来使find 打印rm -fv 命令失败的所有文件:

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

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

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

【讨论】:

  • find 谓词继续令人惊奇/困惑。感谢分享。
猜你喜欢
  • 2017-01-27
  • 2014-10-25
  • 1970-01-01
  • 2022-10-18
  • 2016-03-15
  • 2014-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多