linux - 在 find 中将每个参数传递给 -exec 后的状态

标签 linux bash shell

我正在编写一个快速脚本来列出目录中的所有文件,对每个文件运行一个函数,然后打印出状态代码。现在我想要的状态代码是整个交易的状态代码,而不是执行的最后一个表达式。例如……

find ./ -maxdepth 1 -name \*.txt -exec my_function {} \;

假设我的目录中有以下文件 file1.txtfile2.txtfile3.txt。当 file1.txt 被传递给 -exec 时,它的状态代码是 1 但调用 file2.txtfile3.txt 返回 0。当我在最后调用 echo $? 时,尽管对 file1.txt 的调用返回了 ,但它从最后执行的表达式返回 0 1。我想要的是一个非零状态代码,如果任何表达式在上面的脚本中返回一个非零值,就像对 file1.txt 所描述的那样。我该怎么做?

最佳答案

我会建议这样的事情:

status=0
while IFS= read -d '' -r file; do
   my_function "$file"
   ((status |= $?))
done < <(find . -maxdepth 1 -name '*.txt' -print0)

echo "status=$status"

如果 my_function 中的任何存在状态为 1,这将打印 status=1

关于linux - 在 find 中将每个参数传递给 -exec 后的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31012223/

相关文章:

linux - 在 x86 Linux 程序集中手动添加换行符到堆栈变量

linux - 如何在 linux 中通过唯一进程名称获取 pid?

linux - 如何在Shell中扩展变量内的变量

bash 脚本 : use command output to dynamically create menu and arrays?

php - 从 PHP 执行 C 程序

python - 查找下一行特定字符串后是否存在特定字符串

linux - 如何通过nohup获取程序启动时的pid?

bash - 如何在 bash 中一个接一个地打印列?

linux - 无需手动干预即可获得完整的telnet输出

linux - 获取打开文件描述符的内存使用情况