Mastering UNIX Shell Scripting
Randal K. Michael
Wiley
Unix Shell Scripting 2nd edition is a practical reference book to UNIX shell scripting. There are 954 pages committed to various scripts appropriate for any type of production environment: research, banking, web hosting, personal, security or system administration. Each script is well written. His style is concise and consistent, with shell scripting notation, control statements, and choice of commands commented throughout. You will find that his techniques are sampled over and over.
Randal proves a point that there's not one way to write a script but there is one choice better than the rest. In Chapter 2 Randal demonstrates 24 ways to process a file line-by-line. Of the 24 some are slower than others. He shows that with existing UNIX systems functions there are ways to time script execution. Even though the execution time is important he does not forget to mention the importance of system availability and personal identity management.
 Some script writers don't know how to handle sensitive personal information well. Randal provides a tid-bit on concealing personal identity from eavesdroppers, validating file ownership, and secure data transmission over encrypted protocols. Having any biasness over less secure alternatives is important to mention when a company's asset confidentiality must be 100% reliable and aligned with corporate Security policy. 
 There are chapters on UNIX system availability. Resource availability ensures that services are available for business process to continue. Michael does a good job of providing a holistic approach of application and system availability by providing references to: rysnc, dirvish, oracle database testing, process monitoring, disk capacity monitoring, and swap file monitoring; all the while participating in some sort of notification.
  I suggest UNIX Shell Scripting by Randal Michael to beginners and non-beginners learning UNIX. Learning by example is an effective way to actually learn the shell. The author provides solutions to very common problems that all industries face and that many default packages don't handle. A moderate background in UNIX command line, configuration, and protocol analysis is recommended; although the author helps to lead the reader through technical obscurity with detailed thoughts. A beginner should take more time to read the fine print and use other sources to complement difficult areas.