Reviewed by GreigMcGill
This book, by Dave Taylor, is an excellent and comprehensive explanation of shell scripting through the medium of existing scripts written by the author. The reader is introduced to the basics, and then dropped straight in, with working scripts that are analysed line by line, and then modified for extra functionality.
Each script is presented in a really "wicked cool" way, where first the concept is discussed, then the code is presented. The "How It Works" section explains every new function in the script, and the "Hacking the Script" section discusses how one could modify the script. This is all done in a straightforward and down to earth manner. Taylor is clearly skilled at presenting what can be quite advanced concepts to complete beginners.
There are eleven chapters in the book which cover many "sampler" areas where shell scripting can make life easier. It discusses the concept of building scripts as functions and including them in a code library which can be "sourced" in all your shell scripts for easy access. There is good coverage of Mac OSX, although not being a Mac user, I can't comment on how well the Mac is adressed, merely that it is referenced at great frequency. The scripts themselves are as shell-agnostic as possible, and Taylor tries to point out wherever possible that a function may be shell dependent. He also dedicates a chapter to scripts that "fix" any particular *nix environment to conform to your preferred way of working, thus providing a uniform experience across any *nix you might wish to use.
Now for the nitpicks, which are fairly small. While I found the format of this book to be great, it may not be for everyone. Occasionally one gets the feeling that the book becomes all about the scripts themselves, instead of having the scripts as simple examples with the goal being to teach shell scripting. Of course, that may be the goal - why else include the number of scripts in the book in the title? I'm just unsure whether the book is intended as a script library or as a tutorial. The other very minor complaint is the VERY infrequent lack of explanation of a mentioned concept, such as certain environment variables like $IFS.
A large bouquet though, I didn't notice a single spelling error in reading this book. That seems to be quite rare in this day and age. Well done No Starch!
To summarise, this is an excellent book, with only a couple of tiny niggles which may be down to my personal taste. Get this book if you need to write shell scripts for any reason, ever!