From the Bash Reference Manual, available online for Free, of course:
A Unix shell is both a command interpreter and a programming language…
While executing commands is essential, most of the power (and complexity) of shells is due to their embedded programming languages. Like any high-level language, the shell provides variables, flow control constructs, quoting, and functions.
These are not your forefather’s DOS batch files.