From linux.conf.au 2011, Peter Chubb gives an exellent introduction to shell programming.
Many Unix users have a patchy knowledge of shell programming that has been acquired from years of copying, pasting and slightly modifying handy one-liners found on the web or irc.
This presentation thoroughly covers the most important underlying concepts of shell programming, which makes it perfect for those who are long time users and want to fill in the gaps, but also for the beginner who wants to be off to a good start.
It's an interactive presentation where the audience types in examples that include the concepts explained, and build up to a more advanced shell program in the end.
It covers amongst other things:
* File descriptors
* Jobs, processes
* Variables in the shell
* Parameter expansion
* Command grouping
* Here documents
* Control flow