Arguments, parameters, pattern matching, redirection, piping.
Surprisingly, this wasn't enough so Bourne became defacto in Unix v7.
Indeed, Thompson shell was small and clean, but it wasn't a spartan as you might think.
[1] https://en.wikipedia.org/wiki/Thompson_shell [2] http://man.cat-v.org/unix-1st/1/sh [3] https://en.wikipedia.org/wiki/Bourne_shell