Shell scripts are a perfect tool for automating various tasks - basically their purpose is to "replay" the commands which otherwise would need to be typed by hand on the console.
None of other languages is prepared or designed for such task, f.e. in c You would need to write at least 100 times more lines of code to achieve the same functionality as in shell script. Of course, such c program would be 1000000 times faster, but this is not important if its purpose would be to just invoke other programs in some defined order. This is especially true in case when the execution time of such invoked programs is much longer than the time needed to execute the script.
When the complexity of the tasks have increased, it quickly showed up that shells are expected to have the ability to perform basic computations, to take decisions based on some non-trivial conditions, etc -> this have caused that shell script languages became in fact fully Turing-complete, and it's possible to write just *any* program using only a shell scripting language.
While bash is definitely far from perfection, and the syntax is very ugly in some cases, it's the most advanced shell script interpreter in the world - f.e. it allows to implement object-oriented programming methods and it has full support for handling signals from the kernel (like f.e. the SIGSEGV)
Although there are many people who dislike it, bash is pre-installed on practically every system in the world today, unlike Korn's ksh - which is a great shell, but not that great
