![为什么我应该避免 shell 中的循环?](https://linux22.com/image/63801/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E5%BA%94%E8%AF%A5%E9%81%BF%E5%85%8D%20shell%20%E4%B8%AD%E7%9A%84%E5%BE%AA%E7%8E%AF%EF%BC%9F%20.png)
以下链接建议不要在 shell 中使用循环。
为什么是这样?这是一个循环示例,当我遇到这个答案时,我恰好正在查看:
find /etc/postinstall -name '*.sh' | while read script
do
echo Running $script ...
$script
mv $script $script.done
done
答案1
我想到了两种应用程序类型,其中 shell 循环不被认为是最佳方法。首先是数据处理;许多工具(如sed
、awk
、perl
等)隐式执行循环并且性能更高。第二个是(就像在示例代码中一样),其中针对一组文件执行一些代码,其中find
使用-exec
开关也可以执行命令(也是 shell),而问题和开销更少。可能还有更多的案例,但是提到的这两个应该已经很有启发了。也就是说; shell 循环本质上并不是坏事,或者类似的事情。只需考虑其他选项(如提到的两个)即可。
答案2
Shell 是一种糟糕的编程语言,但它非常方便。我编写了很多 shell 脚本,有时我会使用循环。我有一个需要几个小时才能执行的脚本。它需要用其他东西重写。如果 shell 脚本中有循环,则表明可能是时候开始考虑重写该脚本了,以免它变得完全无法管理。