This question already has an answer here:
The following link recommends against using loops in shells.
Why is this? Here is an example loop I just happened to be looking at when I came across that answer:
find /etc/postinstall -name '*.sh' | while read script do echo Running $script ... $script mv $script $script.done done