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
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
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
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"
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"
Gives you the following output.
Enter your name: Shiva
Hello Shiva, nice to meet you!s
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
If Statement with Else:
if [ "$NAME" == "Shiva" ]
then
echo "Your name is Shiva"
else
echo "Your name is not Shiva"
fi
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
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
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
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
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
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
Following is the output of the above code.
Hello Brad
Hello Kevin
Hello Alice
Hello MarkWhile loop
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"
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
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
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"
Ok. In conclusion, this article covers basic shell scripting concepts anyone can begin with.