Shellcheck has been a huge game changer for me. The lack of a linter is the main reason I don't consider switching to zsh anymore.
When I first found shellcheck, I'd sit on the train every morning and fix all the stupid little bugs in all our shell code. I learned a TON about shell scripting, because the shellcheck wiki is amazing. We had some redhat 6 init scripts checked into our repos, and shellcheck helpd me find syntax errors in those init scripts. If Redhat can't reliably write shell scripts without a linter, or catch bugs from upstream, what makes us think we're any better?
I wouldn't write serious programs in another language without a linter. Why should I write shell scripts without one?
You shouldn't be writing serious programs in Bash/Zsh at all, is the issue. If it's complex enough to need linting, it's complex enough to require Python/Perl.