The way that worked for me to properly learn shell is to do a non-shell project with it.
Like, do a complex background worker for a web server that listens to a socket, does complicated stuff, exports functions (if in Bash), etc.
You don't have to use it afterwards. The value is in the journey. It's fun :)