Considering the critical role Bash has in the installation and operation of Linux distributions and thereby its ubiquity, Bash as a programming language is frequently overlooked by programmers. The author of Pro Bash Programming has done a creditable job in providing the wherewithal for everyone from beginners to expert shell programmers to write more powerful and efficient scripts using Bash, as he takes you through a fast paced coverage of bash's capabilities. Along the way, many useful, well explained and commented practical scripts are provided, many of which can be used to build and test your own scripts. The author claims that while he used to use C when he needed extra speed, that was several years ago and he now does everything in the shell. This book shows how.
The 230 page book is divided into the 15 chapters below, with each chapter ending with a summary of the commands covered and some well chosen exercises.
1 Hello, World! Your first Shell Program
- how to create and run a script and establish good scripting habits
2 Input, Output and Throughput
- echo, printf, read and IO streams
3 Looping and Branching
- tests, conditional execution, looping constructs
4 Command-Line Parsing and Expansion
- quoting, brace, tilde, parameter, variable arithmetic and pathname expansion, command and process substitution, word splitting and parsing with getops
5 Parameters and Variables
- variable scope (essential reading), positional parameters and expansion using patterns, arrays - indexed and associative
6 Shell Functions
- how to define, use and set exit codes, use of compound commands, creation and use of function libraries
7 String Manipulation
- concatenation, processing character by character, case conversion, inserting, overlaying and trimming strings
8 File Operations and Commands
- reading, use of external commands, regular expressions with grep, sed and awk, file name expansion options
9 Reserved Words and Builtin Commands
- good coverage of builtin commands, particularly read (including into arrays) plus a very informative section on how to use builtin commands correctly
10 Writing Bug-Free Scripts and Debugging the Rest
- good scripting programming recommendations for bug free code plus a test and debug example
11 Programming for the Command Line
- manipulating the directory stack, filesystem and miscellaneous functions, managing man pages, games!
12 Runtime Configuration
- command line options and arguments, menus, configuration files, scripts with several names, using environment variables
13 Data Processing
- sorting and searching arrays, various ways of reading arrays into memory, grids (string and two dimensional), data file formats
14 Scripting the Screen
- using the screen as a blackboard or canvas, rendition modes and colours, text scrolling - rolling dice example
15 Entry-Level Programming
- single key entry, use of author's key-funcs library, sanity checking, form entry, reading the mouse!
Appendix: Shell Variables
- alphabetic listing of (1) variables set by bash and (2) variables used by bash
One of the strengths of this book is that the author explains the fastest way to accomplish many standard programming tasks through the appropriate choice of one of the many different bash methods available, including the choice between builtin bash commands and external commands. I found chapter 9 particularly interesting here. Chapter 7 shows how effective bash is at string manipulation with the right techniques - amazing! While the book covers bash 4.0 and often uses non POSIX extensions, those unable to use bash 4.0 or constrained to POSIX compliant code are not forgotten, with the author providing alternatives that work within these constraints.
Where a subject is introduced in an early chapter and expanded on later, the author thoughtfully provides the forward reference. Source code for the included scripts is available from the publisher's webpage for this book at [...]
The 10 page index works reasonably well, but you may find it worthwhile grabbing the companion eBook so you can directly search through the book to make the best use of it as a reference source. If you buy the dead tree version, the eBook is available on-line for $10 until April 2010 direct from the publisher.
I can recommend this book to anyone that can benefit from automating repetitive shell based tasks in Linux but isn't sure how best to go about it. The included scripts and wealth of tips on how to avoid common bash coding problems will provide you with a quick return on your investment.