我需要在目录中递归查找一种类型的文件。然后为每个文件发现找到的文件作为参数执行脚本:Bash - 防止脚本在错误时停止执行
#!/bin/bash
find /mnt/storage/content/www/html/smartsite/src/data/resource/ ! -path "*/tmp/*" -regextype posix-awk -iregex "(.*.toConv)" -exec /mnt/storage/content/www/html/smartsite/cron/VideoConvert/convert {} \;
它的工作原理应该,当调用的脚本(转换)抛出错误但将停止执行。我想阻止这种情况,并继续执行下一个找到的文件。无论我做什么,例如
/convert || true {} \;
或
/convert {} || true \;
它总是抛出一个错误 “没有paremeters的高管”。我究竟做错了什么?
出于好奇,你能解释'抛出错误'还是提供脚本? 'find'的执行不应该停在'stderr'上,或者即使脚本返回一个错误退出代码('-exec'将会变成false,这将阻止'-exec'执行后的表达式,并导致'find '转到下一个文件,但是因为你的命令中'-exec'后面没有表达式,所以这应该不重要) – BroSlow 2014-10-04 08:58:50
“convert”脚本中有ffmpeg调用。如果ffmpeg失败,找到停止搜索。我想要防止这种情况发生,找到下一个文件。所以我要么需要确保“convert”脚本不会向stderr或add ||添加任何错误如果发现脚本失败,则查找/ exec以传递“true”退出代码来查找 – user1209216 2014-10-04 10:26:06