DEV Community

Shiva Prasad Gajula
Shiva Prasad Gajula

Posted on

Mastering Shell Scripting: Your Ultimate Cheat Sheet for Efficient Automation

Bash is a powerful scripting language used in the Linux terminal to automate tasks and perform various operations. Here are some essential commands and concepts to help you get started with Bash scripting.

Creating a script:

Create a file name whatever you want. But, make sure it ends with .sh. Open that file in your favorite text editor and write the first line to begin your shell script journey.

my_script.sh

#! /bin/bash
Enter fullscreen mode Exit fullscreen mode

The #! /bin/bash line is called the shebang or hashbang, and it is used to specify the interpreter to be used for executing the script. In this case, #!/bin/bash indicates that the script should be interpreted and executed using the Bash shell.

Running the script:

Open your terminal and go to the directory where you created the script file. Then run the below command to execute the script

./my_script.sh
Enter fullscreen mode Exit fullscreen mode

At this stage, you won't see any output since we have not written anything other than the shebang line. Let's add some fun stuff.

Display statements:

You can use the echo command to print statements or messages in the terminal. For example:

echo Hello World
Enter fullscreen mode Exit fullscreen mode

You will see Hello World in your terminal

Variables:

You can assign values to variables in Bash using the assignment operator (=). Variable names are usually uppercase by convention and can contain letters, numbers, and underscores. Here's an example:

NAME="Shiva"
echo "My name is $NAME"
Enter fullscreen mode Exit fullscreen mode

User input:

To read user input in Bash, you can use the read command. It prompts you to enter a value and stores it in a variable. For example:

read -p "Enter your name: " NAME
echo "Hello $NAME, nice to meet you!s"
Enter fullscreen mode Exit fullscreen mode

Gives you the following output.

Enter your name: Shiva
Hello Shiva, nice to meet you!s
Enter fullscreen mode Exit fullscreen mode

Conditional Statements:

Bash supports various conditional statements to control the flow of your script. Here are a few examples:

Simple If Statement:

if [ "$NAME" == "Shiva" ]
then
  echo "Your name is Shiva"
fi
Enter fullscreen mode Exit fullscreen mode

If Statement with Else:

if [ "$NAME" == "Shiva" ]
then
  echo "Your name is Shiva"
else
  echo "Your name is not Shiva"
fi
Enter fullscreen mode Exit fullscreen mode

Else If Statement:

if [ "$NAME" == "Shiva" ]
then
  echo "Your name is Shiva"
elif [ "$NAME" == "Jack" ]
then
  echo "Your name is Jack"
else
  echo "Your name is NOT Shiva or Jack"
fi
Enter fullscreen mode Exit fullscreen mode

Below is an example of comparing two numbers using -gt operator in the shell script

NUM1=3 
NUM2=5
if [ "$NUM1" -gt "$NUM2" ] 
then 
    echo "$NUM1 is greater than $NUM2"
else 
    echo "$NUM1 is less than $NUM2"
fi
Enter fullscreen mode Exit fullscreen mode

You can use any of the following operators to do comparisons in a shell script.

  • Equal to: == or =

    • Example: [ "$var1" == "$var2" ]
    • Checks if $var1 is equal to $var2.
  • Not equal to: !=

    • Example: [ "$var1" != "$var2" ]
    • Checks if $var1 is not equal to $var2.
  • Greater than: >

    • Example: [ "$var1" -gt "$var2" ]
    • Checks if $var1 is greater than $var2.
  • Greater than or equal to: -ge

    • Example: [ "$var1" -ge "$var2" ]
    • Checks if $var1 is greater than or equal to $var2.
  • Less than: <

    • Example: [ "$var1" -lt "$var2" ]
    • Checks if $var1 is less than $var2.
  • Less than or equal to: -le

    • Example: [ "$var1" -le "$var2" ]
    • Checks if $var1 is less than or equal to $var2.

Following is the example to check whether a file exists with the given or not

FILE="test.txt"
if [ -e "$FILE" ]
then
  echo "$FILE exists"
else
  echo "$FILE does not exist"
fi
Enter fullscreen mode Exit fullscreen mode

Case Statement:

The case statement allows you to evaluate the value of a variable against multiple patterns and execute different blocks of code based on the matching pattern.

Following is the example code snippet.

read -p "Are you 21 or over? Y/N " ANSWER
case "$ANSWER" in
    [yY] | [yY][eE][sS])
        echo "You can have a beer :)"
        ;;
    [nN] | [nN][oO])
        echo "Sorry, no drinking"
        ;;
    *)
        echo "Please enter y/yes or n/no"
        ;;
esac
Enter fullscreen mode Exit fullscreen mode

The above code produces the following output.

# Example 1
Are you 21 or over? Y/N y
You can have a beer :)
# Example 2
Are you 21 or over? Y/N N
Sorry, no drinking
Enter fullscreen mode Exit fullscreen mode

Simple for loop

The for loop allows you to iterate over a list of values and perform a set of actions for each value.

NAMES="Brad Kevin Alice Mark"
for NAME in $NAMES
do
    echo "Hello $NAME"
done
Enter fullscreen mode Exit fullscreen mode

Following is the output of the above code.

Hello Brad
Hello Kevin
Hello Alice
Hello MarkWhile loop
Enter fullscreen mode Exit fullscreen mode

A while loop in a shell script allows you to repeatedly execute a block of code as long as a certain condition is true. Here is an example of for loop.

LINE=1
while read -r CURRENT_LINE
do
    echo "$LINE: $CURRENT_LINE"
    ((LINE++))
done < "./contents.txt"
Enter fullscreen mode Exit fullscreen mode

Functions:

In shell scripting, you can define and use functions to encapsulate a block of code that can be executed multiple times throughout your script.

sayHello() {
    echo "Hello World"
}

# Call the function
sayHello
Enter fullscreen mode Exit fullscreen mode

Function with parameters:

greet() {
    echo "Hello, I am $1 and I am $2 years old"
}

# Call the function and pass arguments
greet "Shiva" "26"
FUNCTION WITH PARAMS
Enter fullscreen mode Exit fullscreen mode

Create a folder and write to a file

mkdir hello
touch "hello/world.txt"
echo "Hello World" >> "hello/world.txt"
echo "Created hello/world.txt"
Enter fullscreen mode Exit fullscreen mode

Ok. In conclusion, this article covers basic shell scripting concepts anyone can begin with.

Top comments (0)