使用find和xargs,我如何在错误时停止执行而不会出错



在我的脚本中,我有以下3个命令

基本上它要做的是:

  • 在一个临时目录中,根据文件名创建一个指向某些文件的符号链接。
  • 更改符号链接的名称以匹配当前日期
  • 将符号链接从临时目录移动到适当的位置

find . -type f -name "*${regex}-*" -exec ln -s {} "${DataTempPath}/"{} ;
find "$DataTempPath" -type l | sed -e "p;s/A[0-9]*/A${today}/" | xargs -n2 mv
mv $DataTempPath/* $DataSetPath

这将作为cron作业插入,每15分钟运行一次,当源目录包含有效数据时,这不是问题。但是,当它不包含任何文件时,我在第二个查找命令和mv命令

上得到错误。

我猜我想要的是一种方法,不执行脚本的最后两行,如果第一行没有创建任何新的链接

GNU xargs支持--no-run-if-empty参数,引用文档"如果标准输入完全为空,则不运行该命令。"缺省情况下,即使没有输入,也只执行一次。这应该有助于避免xargs错误(假设您正在运行GNU xargs)

检查命令的状态:

find . -type f -name "*${regex}-*" -exec ln -s {} "${DataTempPath}/"{} ;
if [[ $? == 0 ]]; then 
 find "$DataTempPath" -type l | sed -e "p;s/A[0-9]*/A${today}/" | xargs -n2 mv
 mv $DataTempPath/* $DataSetPath
fi

最新更新