Bash Scripting Examples - Command Line Utilities

Explore essential Bash scripting examples for command line utilities, including for loops, case statements, debugging, and lock file creation. Enhance your shell scripting skills.

Bash Scripting Examples

Bash Scripting Fundamentals

Bash (Bourne Again SHell) is a powerful command-line interpreter and scripting language widely used in Unix-like operating systems. Mastering Bash scripting is crucial for automating tasks, managing systems, and enhancing productivity for developers and system administrators.

Common Bash Scripting Constructs

This section provides practical examples of common Bash scripting constructs that are frequently used in command-line utilities and automation scripts.

Implementing For Loops

The for loop is used to iterate over a list of items, executing a block of commands for each item. This is particularly useful for processing files or a series of arguments.

# To implement a for loop:
for file in *;
do 
    echo "$file found";
done

Using Case Statements

The case statement allows you to match a variable against a list of patterns and execute commands based on the first match. It's a cleaner alternative to long if-elif-else chains for specific value matching.

# To implement a case command:
case "$1"
in
    0) echo "zero found";;
    1) echo "one found";;
    2) echo "two found";;
    3*) echo "something beginning with 3 found";;
esac

Enabling and Disabling Debugging

Debugging is essential for troubleshooting scripts. Bash provides options to enable or disable script execution tracing, showing each command as it's executed.

# To turn on debugging:
set -x

# To turn off debugging:
set +x

Retrieving Piped Command Exit Status

When commands are chained together using pipes (|), the PIPESTATUS array variable can be used to retrieve the exit status of each command in the pipeline.

# Retrieve N-th piped command exit status:
printf 'foo' | fgrep 'foo' | sed 's/foo/bar/'
echo ${PIPESTATUS[0]}  # replace 0 with N (e.g., PIPESTATUS[1] for the second command)

Creating Lock Files

Lock files are used to prevent multiple instances of a script from running simultaneously. The noclobber option ensures that a file is not overwritten if it already exists.

# To create a lockfile:
( set -o noclobber; echo $$ > my.lock ) || echo 'Failed to create lock file: my.lock is already held.'

Further Learning Resources

To deepen your understanding of Bash scripting, consider exploring the following resources: