1

在我的脚本中,我有以下 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 分钟运行一次,当源目录包含有效数据时,这不是问题。但是,当它不包含任何文件时,我在第二个 find 命令和 mv 命令上出现错误

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

4

2 回答 2

2

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

于 2013-06-13T13:21:42.343 回答
0

检查命令的状态:

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
于 2013-06-13T13:11:35.223 回答