Community participation made this project possible. The author gratefully acknowledges that writing this book would have been an impossible task without help and feedback from all you people out there.
Philippe Martin translated this document into DocBook/SGML. While not on the job at a small French company as a software developer, he enjoys working on GNU/Linux documentation and software, reading literature, playing music, and for his peace of mind making merry with friends. You may run across him somewhere in France or in the Basque Country, or email him at feloy@free.fr.
Philippe Martin also pointed out that positional parameters past $9 are possible using {bracket} notation, see Example 4-5.
Stephane Chazelas sent a long list of corrections, additions, and example scripts. More than a contributor, he has, in effect, taken on the role of editor for this document. Merci beaucoup!
I would like to especially thank Patrick Callahan, Mike Novak, and Pal Domokos for catching bugs, pointing out ambiguities, and for suggesting clarifications and changes. Their lively discussion of shell scripting and general documentation issues inspired me to try to make this document more readable.
I'm grateful to Jim Van Zandt for pointing out errors and omissions in version 0.2 of this document. He also contributed an instructive example script.
Many thanks to Jordi Sanfeliu for giving permission to use his fine tree script (Example A-18).
Likewise, thanks to Michel Charpentier for permission to use his dc factoring script (Example 12-37).
Kudos to Noah Friedman for permission to use his string function script (Example A-19).
Emmanuel Rouat suggested corrections and additions on command substitution and aliases. He also contributed a very nice sample .bashrc file (Appendix G).
Heiner Steven kindly gave permission to use his base conversion script, Example 12-33. He also made a number of corrections and many helpful suggestions. Special thanks.
Rick Boivie contributed the delightfully recursive pb.sh script (Example 34-7) and suggested performance improvements for the monthlypmt.sh script (Example 12-32).
Florian Wisser enlightened me on some of the fine points of testing strings (see Example 7-5), and on other matters.
Oleg Philon sent suggestions concerning cut and pidof.
Marc-Jano Knopp sent corrections on DOS batch files.
Hyun Jin Cha found several typos in the document in the process of doing a Korean translation. Thanks for pointing these out.
Andreas Abraham sent in a long list of typographical errors and other corrections. Special thanks!
Others making helpful suggestions and pointing out errors were Gabor Kiss, Leopold Toetsch, Peter Tillier, Marcus Berglof, Tony Richardson, Nick Drage (script ideas!), Rich Bartell, Jess Thrysoee, Adam Lazur, Bram Moolenaar, Baris Cicek, Greg Keraunen, Keith Matthews, Sandro Magi, and David Lawyer (himself an author of 4 HOWTOs).
My gratitude to Chet Ramey and Brian Fox for writing Bash, an elegant and powerful scripting tool.
Very special thanks to the hard-working volunteers at the Linux Documentation Project. The LDP hosts a repository of Linux knowledge and lore, and has, to a large extent, enabled the publication of this book.
Thanks most of all to my wife, Anita, for her encouragement and emotional support.