Cryptic, overly complicated syntax. for loops, if statements, etc.. are all done better in other languages.

No package manager, build, or dependency features. This means it is ugly and gross to import functions from other programming languages.

Zero data structure support, so any data manipulation is horrible.

No test support, so you can't mock and test business logic.

No debugger support.

It's just a bad, cryptic, confusing language that is hard to maintain.

Remember: it's not that you CAN'T do these things, it's that they work better in other languages, like Node or Python. And shelling out in Python or node works great and is very easy. And Python comes built into most systems these days.

It is hard to justify writing shell scrips anymore. It's like writing perl or cobol. We have better tools now, the world has moved on.