为什么我应该避免 shell 中的循环?

为什么我应该避免 shell 中的循环?

以下链接建议不要在 shell 中使用循环。

for循环范围内的bash变量

为什么是这样?这是一个循环示例,当我遇到这个答案时,我恰好正在查看:

find /etc/postinstall -name '*.sh' | while read script
do
  echo Running $script ...
  $script
  mv $script $script.done
done

答案1

我想到了两种应用程序类型,其中 shell 循环不被认为是最佳方法。首先是数据处理;许多工具(如sedawkperl等)隐式执行循环并且性能更高。第二个是(就像在示例代码中一样),其中针对一组文件执行一些代码,其中find使用-exec开关也可以执行命令(也是 shell),而问题和开销更少。可能还有更多的案例,但是提到的这两个应该已经很有启发了。也就是说; shell 循环本质上并不是坏事,或者类似的事情。只需考虑其他选项(如提到的两个)即可。

答案2

Shell 是一种糟糕的编程语言,但它非常方便。我编写了很多 shell 脚本,有时我会使用循环。我有一个需要几个小时才能执行的脚本。它需要用其他东西重写。如果 shell 脚本中有循环,则表明可能是时候开始考虑重写该脚本了,以免它变得完全无法管理。

相关内容