Bash Scripting is a handy and powerful tool for automating tasks on a Unix-like operating system. It is a command language interpreter that executes commands read from the standard input or from a file. Bash also incorporates useful features from the Korn and C shells (ksh and csh).


Variables in Bash are used to store data. They can be used to store strings, numbers, and other types of data. Variables are defined using the = operator.


List and Array

Bash supports lists and arrays. Lists are used to store a sequence of elements, while arrays are used to store a collection of elements.

# List
fruits="apple orange banana"
# Accessing list elements
echo $fruits
# Iterating over list elements
for fruit in $fruits; do
    echo $fruit

# Array
colors=("red" "green" "blue")
# Accessing array elements
echo ${colors[0]}
# Iterating over array elements
for color in ${colors[@]}; do
    echo $color

Control Statements

Bash supports various control statements, including if, case, for, while, and until. These control statements are used to direct the flow of the program based on conditions.

# If statement
if [ $age -gt 18 ]; then
    echo "You are an adult"
    echo "You are a minor"

# For loop
for i in {1..5}; do
    echo $i

# While loop
while [ $count -lt 5 ]; do
    echo $count


Bash functions allow you to group commands and execute them as a single unit. They are useful for code reuse and modularity.

# Function definition
greet() {
    echo "Hello, $1!"

# Function call
greet "John"

File Operations

Bash provides a wide range of file operations, including reading, writing, and manipulating files. It also supports file permissions and ownership.

# Read file
cat file.txt

# Write to file
echo "Hello, World!" > file.txt
# Append to file
echo "Hello, World!" >> file.txt
# Read file line by line
while IFS= read -r line; do
    echo "$line"
done < file.txt

# File permissions
chmod 755

Advanced Features

[[ ]] is a more powerful version of [ ] and is used for conditional expressions. It supports pattern matching and regular expressions.

# Conditional expression
if [[ $age -gt 18 && $age -lt 60 ]]; then
    echo "You are eligible to work"

$() is used to execute commands and capture their output. It is similar to backticks but is more readable and easier to nest.

# Command substitution
echo $files

$? is a special variable that holds the exit status of the last command. It is used to check the success or failure of a command.

# Check exit status
echo $?

$@ and $* are used to access all the command-line arguments passed to a script or function.

# Command-line arguments
echo $@ // prints all arguments
echo $* // prints all arguments as a single string