Swiftorial Logo
Home
Swift Lessons
Tutorials
Learn More
Career
Resources

Advanced Shell Scripting

1. Introduction

Shell scripting is a powerful way to automate tasks in a Unix-based operating system. Advanced shell scripting involves using complex constructs such as loops, conditional statements, and functions. This tutorial will guide you through these advanced concepts with detailed explanations and examples.

2. Variables and Parameters

Variables are used to store data that can be used later in the script. In shell scripting, variables are created and assigned without any keyword.

Example:

#!/bin/bash
name="John Doe"
echo "Hello, $name!"

Output:

Hello, John Doe!

Positional parameters can be used to pass arguments to a script. These are accessed using $1, $2, etc.

Example:

#!/bin/bash
echo "First argument: $1"
echo "Second argument: $2"

Output (if script is run with arguments "foo" and "bar"):

First argument: foo
Second argument: bar

3. Conditional Statements

Conditional statements allow you to execute commands based on certain conditions. The most common conditional statement is the if statement.

Example:

#!/bin/bash
if [ $1 -gt 10 ]; then
    echo "The number is greater than 10."
else
    echo "The number is 10 or less."
fi

Output (if argument is 15):

The number is greater than 10.

4. Looping Constructs

Loops allow you to execute a block of code multiple times. The most common loops in shell scripting are for, while, and until loops.

4.1 For Loop

Example:

#!/bin/bash
for i in {1..5}; do
    echo "Number: $i"
done

Output:

Number: 1
Number: 2
Number: 3
Number: 4
Number: 5

4.2 While Loop

Example:

#!/bin/bash
count=1
while [ $count -le 5 ]; do
    echo "Count: $count"
    ((count++))
done

Output:

Count: 1
Count: 2
Count: 3
Count: 4
Count: 5

4.3 Until Loop

Example:

#!/bin/bash
count=1
until [ $count -gt 5 ]; do
    echo "Count: $count"
    ((count++))
done

Output:

Count: 1
Count: 2
Count: 3
Count: 4
Count: 5

5. Functions

Functions allow you to create reusable blocks of code that can be called multiple times within a script.

Example:

#!/bin/bash
function greet {
    echo "Hello, $1!"
}
greet "Alice"
greet "Bob"

Output:

Hello, Alice!
Hello, Bob!

6. Error Handling

Handling errors is crucial in advanced shell scripting. You can use the trap command to catch errors and execute a cleanup function.

Example:

#!/bin/bash
trap 'echo "An error occurred. Exiting..."' ERR

function faulty_function {
    return 1
}

faulty_function
echo "This will not be executed."

Output:

An error occurred. Exiting...

7. Case Statement

The case statement is used to execute commands based on different values of a variable.

Example:

#!/bin/bash
echo "Enter a number between 1 and 3:"
read num
case $num in
    1)
        echo "You entered one."
        ;;
    2)
        echo "You entered two."
        ;;
    3)
        echo "You entered three."
        ;;
    *)
        echo "Invalid input."
        ;;
esac

Output (if user enters 2):

You entered two.

8. Arrays

Arrays are used to store multiple values in a single variable. Bash supports one-dimensional arrays.

Example:

#!/bin/bash
fruits=("Apple" "Banana" "Cherry")
for fruit in "${fruits[@]}"; do
    echo "Fruit: $fruit"
done

Output:

Fruit: Apple
Fruit: Banana
Fruit: Cherry

9. File Operations

Shell scripts can perform various file operations such as reading, writing, and appending to files.

9.1 Reading a File

Example:

#!/bin/bash
while IFS= read -r line; do
    echo "$line"
done < "filename.txt"

9.2 Writing to a File

Example:

#!/bin/bash
echo "Hello, World!" > "output.txt"

9.3 Appending to a File

Example:

#!/bin/bash
echo "Appending this line." >> "output.txt"

10. Conclusion

This tutorial covered advanced shell scripting concepts such as variables, conditional statements, loops, functions, error handling, arrays, and file operations. By mastering these concepts, you can create powerful and efficient shell scripts to automate tasks on your Linux system.