Course Description

This 3-day Introduction to Bash Programming is suitable for users of UNIX, Linux or Mac OS/X systems who need to develop skills in writing shell scripts using the Bash shell.

After completing this course, students will know how to:

  • Explain the purpose of shell programs.
  • Recognize applications for shell programs.
  • Design and write shell programs of moderate complexity.
  • Manage multiple concurrent processes to achieve higher utilization of UNIX/Linux systems.



UNIX or Linux Fundamentals or equivalent experience.


Course content


What is a Process?
Process Structure
The ps Utility
Options to the ps Utility
Background Commands (&)
Killing Background Processes
Redirecting the Standard Error

Getting Started

What is a Shell?
Running Scripts
Specifying the Script’s Interpreter
The PATH Environment Variable


Shell Variables
The read Command
The export Command
The Shell Environment
Variable Substitution
Command Substitution

The Login Process

The Login Process
The System Profile Script
Your .bash_profile Script
The . Command

Conditional Statements

The Exit Status of Commands
Command Line Examples
The test Command
The if-then-else Construct
The elif Construct
case Statements


The for Loop
The while Loop
break & continue
Reading Lines From Files
Using Arrays with Loops

Special Variables

$$ – PID of Shell
Command-Line Arguments
$# – Number of Arguments
$* – All Arguments
The shift Command
The set Command
Getting Options

Quoting Mechanisms

Single vs. Double Quotes
What is a Here Document?
Using a Here Document
Here Document Quoting
Ignoring Leading Tabs


Shell Functions
Passing Arguments to Functions
Returning Values from Functions
Function Declarations

Advanced Programming

Shell Arithmetic
The select Statement
Terminal Independence in Scripts
The eval Command

Debugging Techniques

Using echo
Using Standard Error
Script Tracing
Options for Debugging
Conditional Debugging