This week's book giveaway is in the Testing forum. We're giving away four copies of The Way of the Web Tester: A Beginner's Guide to Automating Tests and have Jonathan Rasmusson on-line! See this thread for details.
Expert Shell Scripting helps bridge the gap between following a recipe and truly solving problems. It's not a cookbook, and it doesn't teach basic programming structures. As such, it would probably frustrate beginners. Where this book shines is that it adds context and ties concepts together beautifully.
A full chapter on debugging, for example explores different approaches to troubleshooting, comparing and contrasting the various approaches, discussing where each approach might be appropriate, pointing out pitfalls and gotchas along the way. Another chapter deals with comparisons and tests, making sense of the intricacies and subtleties of comparing different types of things and the myriad of ways of doing it well, or doing it wrong. The book covers a wide range of topics, from command line switches and options, variable setting, date/time manipulation, text processing, and data redirection, scheduling, interaction, and automation.
The progression is swift, and the book ends with a section of gems that the author has spent years accumulating. It is perfect for the programmer who has never written shell scripts (or just dabbled), since it quickly takes you beyond syntax and structures and bring you to the point where you can actually DO stuff in the shell. If you are an intermediate shell scripter it will probably fill in many gaps and catapult you to a higher level of competence.