Bash Script Examples

In this tutorial, we will explain the most common bash operations while also showing you a few bash script examples.

A Unix shell program interprets instructions and programs in the form of commands. These commands are either directly entered by the user, or they can be run in sequence from a file (called a shell script). An important distinction of bash scripts when compared to other coding languages is that they are interpreted and not compiled. When you write a shell script and then run it, it’s interpreted by your operating system, with no compilation required.

Bash scripts are a versatile and handy tool that most system administrators love using to simplify their workflow and automate repetitive tasks. With scripts, you can do almost anything that you can do using a normal shell environment.

Requirements

  • A Linux VPS with root access enabled or a user with sudo privileges. All common distributions of Linux (Debian, Ubuntu, CentOS, Fedora, etc) are all able to run shell scripts.

Our First Bash Script Example – The echo Command in Scripts

You can run a bash script from the terminal, or by executing it from a bash file that is saved on your computer or server.

Let’s write our first bash script example by creating a simple shell script file named test.sh that prints the line “Hello World”:

nano test.sh

The .sh extension is short for shell. Continue by adding the following lines:

#!/bin/bash
echo "Hello World"

To save, press Ctrl+O and then press enter to confirm the filename. Then press Ctrl+X to exit the nano text editor.

Once you have done the above, run the bash script using the following command:

bash test.sh

This will print the following output:

Hello World

This is a very simple command, however it can be useful when debugging your script or when you want to display some information to the user.

Get User Input in a Bash Script

You can accept input from the keyboard and assign a value to a user-defined shell variable using the read command. This will read whatever is entered by the keyboard and save it to the variable.

To start, create a new bash script named input.sh:

nano input.sh

Add the following lines. These commands will display a question, take input from the user, and print the value entered while also combining it with a string.

#!/bin/bash
echo "What is Your Name?"
read name
echo "My Name is $name"

Save and close the file, then run the script using the following command:

bash input.sh

You will be asked to provide your name and print the message with other string as shown below:

What is Your Name?
John
My Name is John

If Statements in Bash Scripts

Bash if statements are very useful and allow us to make decisions in bash scripts. With if statements, you can decide whether or not to run a block of code based on a preset condition being met or not.

The basic syntax of if statement is shown below:

if [condition]; then

fi

Anything between the keywords then and fi will be executed only if the condition is true.

For better understanding, create a test-if.sh file:

nano test-if.sh

Here, the number 8 is assigned to the variable n. If the value of $n is is less than 10, then the output will be “one digit number”, otherwise the output will be “two digit number”. Note that there is no upper limit to the range, so even three digit numbers will give “two digit number” as the output.

#!/bin/bash
n=9
if [ $n -lt 10 ];
then
echo "one digit number"
else
echo "two digit number"
fi

The -lt operator is a comparison tool. LT is short for “less than”. You can replace it and use -gt to check whether n is “greater than” the value on the right.

Save and close the file, then run the bash script example with the following command:

bash test-if.sh

You should see the following output:

one digit number

If Statements with AND logic in Bash

If you want to check for multiple conditions in a bash script, then you can use logic gates to accomplish this. The AND logic gate only returns TRUE when both comparisons being made are TRUE. AND logic can be defined using the symbol &&.

Create a new test-and.sh file where we can test this AND logic:

nano test-and.sh

Add the following lines:

echo "Enter your name"
read name
echo "Enter your age"
read age
if [[ ( $name == "john" && $age == "40" ) ]]; then
echo "you are right"
else
echo "you are wrong"
fi

Save and close the file, then run the newly-written script with the following command:

bash test-and.sh

This will ask for your name and age, and then compare it with AND logic. If both of the variables match the values that they are being compared to, then the output will be “you are right” – otherwise, the output will be “you are wrong”. Both values must be identical to the variables in order for the if statement to succeed.

Enter your name
john
Enter your age
40
you are right

If Statements with OR logic in Bash

The OR condition is also frequently used in bash scripts if you want to check for multiple conditions being met individually. An OR gate returns a TRUE value when one of any required conditions is met.

For example, create a test-or.sh script with the following contents:

nano test-or.sh

Add the following lines:

#!/bin/bash
echo "Enter any number between 1 and 99 which can be divided by 10"
read number
if [[ ( $number -eq 10 || $number  -eq 20 || $number -eq 30 || $number -eq 40 || $number -eq 50 || $number -eq 60 || $number -eq 70 || $number -eq 80 || $number -eq 90 ) ]]
then
echo "You are right"
else
echo "You are wrong"
fi

Save and close the file before running the script with the following command:

bash test-or.sh

This script will ask the user to enter any number between 1 and 99 that can be divided by 10. If the value is a number which can be divided by 10 (e.g. 10 or 20), then the output will be “You are right” – otherwise, the output will be “You are wrong”.

Enter any number between 1 and 99 which can be divided by 10
31
You are wrong
Enter any number between 1 and 99 which can be divided by 10
90
You are right

If-Else Statements in Bash

If-Else statements allow the shell interpreter to make the correct decision based off of several conditions. If the condition in the if statement is not met, then a block of code between else and fi will be executed before continuing with the rest of the script. Note that if the if statement’s condition is met, then the code in the else block will not be executed. We’ll show you a bash script example on If-Else as well.

For example, create a test-else.sh file with the following contents:

nano test-else.sh

Add the following lines:

#!/bin/bash
a=10
b=20
if [ $a -gt $b ]
then
echo "a is greater than b"
else
echo "a is less than b"
fi

Save the file and exit the text editor. Run the script with the following command:

bash test-else.sh

This will print different messages based on whether the number is greater or less than the number it’s being compared to.

a is less than b

While Loops in Bash

A Loop allows you to run a series of commands a number of times until a particular condition is met. While loops execute a block of code over and over as long as the condition is met. As soon as the condition is no longer met, the loop exits.

Loops are very useful for automating repetitive tasks. Make sure that the condition is eventually met, or the loop will continue indefinitely for as long as the computer/server is on.

The basic syntax of a while loop is shown below:

while [CONDITION]
do
  [COMMANDS]
done

Let’s create a test-while.sh script file that will print the current value of the variable n and incremented by one.

nano test-while.sh

Add the following lines:

#!/bin/bash
n=0
while [ $n -le 5 ]
do
  echo Number: $n
  ((n++))
done

Save and close the file then run the script with the following command:

bash test-while.sh

The loop iterates as long as n is less than or equal to 5 and prints the following output:

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

As soon as the condition is no longer met, the loop exits and the program finishes executing.

For Loop in Bash

For loops in bash are also useful for automating repetitive tasks.

The basic syntax of a For Loop is shown below:

for item in [LIST]
do
  [COMMANDS]
done

For example, let’s create a test-for.sh script and use the for expression to specify a range of numbers or characters that we want to loop through.

nano test-for.sh

Add the following contents:

#!/bin/bash
for n in {1..10}
do
  echo "Number: $n"
done

Save and close the file, then execute the script with the following command:

bash test-for.sh

This will print the number from 1 to 10, as shown below:

Number: 1
Number: 2
Number: 3
Number: 4
Number: 5
Number: 6
Number: 7
Number: 8
Number: 9
Number: 10

The loop increments the variable until the condition is no longer met.

Read from a File in Bash

You can read any file line-by-line using a loop in a bash script.

First, create a file named file.txt with the following contents:

nano file.txt

Add the following lines:

Linux
Ubuntu
CentOS
Fedora
Debian

We’re going to use this file as our example file. Save and close the file, then create a test-file.sh script:

nano test-file.sh

Add the following lines:

#!/bin/bash
file='file.txt'
while read line; do
echo $line
done < $file

Save the file, then run the script that we just wrote using the following command:

bash test-file.sh

You should see the following output:

Linux
Ubuntu
CentOS
Fedora
Debian

Check If a File or Directory Exists

You can also check the existence of file or directory using the -f and -d options in bash scripts.

For example, create a test-check.sh file and check whether the specified file exists or not.

nano test-check.sh

Add the following lines:

#!/bin/bash
filename=$1
if [ -f "$filename" ]; then
echo "File exists"
else
echo "File does not exist"
fi

In this script, we also show you how to pass arguments to a script when calling it from the command line. You do so by setting a variable to $1 for the first argument.

Save the file, then run the script to check whether the /etc/fstab file exists:

bash test-check.sh /etc/fstab

You should see the following output:

File exists

Next, create another script named test-checkdir.sh and check whether the specified directory exists or not.

nano test-checkdir.sh

Add the following lines:

#!/bin/bash
dirname=$1
if [ -d "$dirname" ]; then
echo "Directory exists"
else
echo "Directory does not exist"
fi

Save and close the file, then check whether the /opt directory exists with the following command:

bash test-checkdir.sh /opt

You should get the following output:

Directory exists

Conclusion

These are just a few examples of some basic bash script concepts and syntax. You can combine these blocks and statements to create a more complex and useful script.

In the above guide, we showed you what bash scripts are, how they can be useful, and some bash script examples to help you get started with scripting.


You can use bash scripts to automate tasks, but having someone else do it for you saves you even more time and effort than writing a script. If you use one of our fully managed Linux web hosting solutions, you can simply ask our technical support to create a bash script to automate a task for you. Our experts can also help you just accomplish the task that you need instead of writing a script. They are available 24/7 and will help you any aspect of managing your server.

If this post helped you learn about bash scripting, we would appreciate you sharing this post using our social media shortcuts. If you have any questions or comments, feel free to share them in the comments section below. Thank you.

1 thought on “Bash Script Examples”

  1. I often love to set defaults for shell variables, and allow them to be overridden by a command line set of “keyword=value”. Admittedly horribly fragile, and with getopt there are better –options, but you can hardly beat the simplicity?

    a=1
    b=2
    # simple keyword=value command line parser for bash
    for arg in $*; do\
    export $arg
    done

    #now use your variables
    echo a=$a b=$b

Leave a Comment

To prove you are human please solve the following *