I tend to think of Bash as a syntax-free language. There are no clear rules, you just have to kind of make it work every time. It's like the programming version of a freestyle rap or Parkour.
It's more of a pidgin. Syntax and semantics made up on the fly to suit the need of the moment, and then made permanent once used. No overarching design or consistency.