Functions are a way of separating out particular pieces of a script into smaller, more manageable chunks of code. Functions make your code modular, which is a good design principle because a function

  • Hides implementation details from the main script, simplifying the shell script’s main body of code
  • Allows consistent reuse of code from within the script, or even between several shell scripts
  • Can be replaced if the underlying detail it works with is changed
  • Can be tested over and over again as a small piece of a larger script, with changing input values to prove that the code is correct

This all helps to keep your code more flexible, readable, and maintainable.

When developing a piece of code as a function, it can be useful to put it in a file by itself, and have the “main” part of the script call the function repeatedly with different test values. This can speed up the development and testing cycle significantly.

Defining Functions

It is conventional to define functions at the start of the file, although this is not strictly necessary. It is helpful for debugging and maintenance to include a comment marking where the function definitions end and the actual code execution begins, to save readers from having to read through all the definitions before getting to the main code. The block of code defined as a function can be declared in one of three different ways, depending ...

Get Shell Scripting: Expert Recipes for Linux, Bash, and More now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.