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!
Paulo Marcel Coelho Aragao offered many corrections, both major and minor, and contributed quite a number of helpful suggestions.
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), and to Rick Boivie for revising it.
Likewise, thanks to Michel Charpentier for permission to use his dc factoring script (Example 12-43).
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 J).
Heiner Steven kindly gave permission to use his base conversion script, Example 12-39. 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), revised the tree.sh script (Example A-18), and suggested performance improvements for the monthlypmt.sh script (Example 12-38).
Florian Wisser enlightened me on some of the fine points of testing strings (see Example 7-6), and on other matters.
Oleg Philon sent suggestions concerning cut and pidof.
Michael Zick extended the empty array example to demonstrate some surprising array properties. He also provided other examples of this.
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 contributing scripts, 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, Albert Reiner, Dim Segebart, Rory Winston, Lee Bigelow, Wayne Pollock, "jipe," "Mark," "bojster," Emilio Conti, Ian. D. Allen, Arun Giridhar, Dennis Leeuw, Dan Jacobson, Aurelio Marinho Jargas, Edward Scholtz, Jean Helou, Chris Martin, Lee Maschmeyer, Bruno Haible, Wilbert Berendsen, Sebastien Godard, Bjön Eriksson, "nyal," John MacDonald, Joshua Tschida, Troy Engel, Manfred Schwarb, Amit Singh, Bill Gradwohl, David Lombard, Jason Parker, Steve Parker, Bruce W. Clare, William Park, Vernia Damiano, Mihai Maties, Jeremy Impson, Ken Fuchs, Frank Wang, Sylvain Fourmanoit, Matthew Walker, Kenny Stauffer, Filip Moritz, Andrzej Stefanski, Stefano Palmeri, and David Lawyer (himself an author of four 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 and appreciation to IBM, Novell, Red Hat, the Free Software Foundation, and all the good people fighting the good fight to keep Open Source software free and open.
Thanks most of all to my wife, Anita, for her encouragement and emotional support.