在我的脚本中,我有以下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