There are workloads where shell scripts are the so-called right tool for a job. All too often I see people writing scripts in "proper" languages and calling os.system() on every other line. Shell scripts are good for gluing programs together. It's fine to use them for that.
For me it's once you make switch to a "proper" language you realize how much lifting pipelines do when it comes to chaining external binaries together.