If like me (and most people) you learn best from examples, this is just the book to read to find out how to write shell scripts. Actually it is a petty good book to look at if you just want to learn how to be a more effective user of any flavour of Unix: Linux, Ubuntu, Solaris, Red-hat, etc, etc. Obviously, you do have to be a Unix user for this stuff to be useful.
Material is presented in a logical order; it has lots of examples, and the explanations are clear. It begins with very simple things, and ends up with very powerful scripts particularly useful to system administrators.
While I wouldn't say I could recommend this book for complete novices I highly recommend it for intermediate and advanced administrators, its packed with easy to follow examples that are broken down into well thought out chapters that build on what you have learned earlier in the book, personally I don't like chapter one about the history of Linux but the rest of the book is well worth the purchase price, its one of those books you use all the time because if you are like me you write scripts to carry out manual, dull, boring and repetetive tasks and you want a book you can flick open to the relevant section, lookup what you need and then start coding, for this reason it won't just be gathering dust on your bookshelf the way many IT related books do...
I am totally hooked on this book! This has never happened with Linux scripting before. When you wake up thinking of examples to add to your code .. that's a break through book. Simple examples - the code works and works wells. So you get excited and start thinking up other additions for your script. Before you know it, you're well into it.. and it's happened literally by osmosis. You'll be into it, before you've realised that you are.
Very pragmatic, great examples, and they work so well that it's rewarding to keep reading :)
It also explains mega gotchas, such as some variables such as RANDOM and HISTCMD can be unset, but then you can't get back the special functionality which they had before eg $RANDOM will no longer return random numbers after it's been unset.
Concise explainations but every page consists of code snippets to try out.. and learn by doing.