# Day 8: Shell Scripting Challenge - #90DaysOfDevOps

In this blog, I'll walk you through the Shell Scripting Challenge I completed on Day 8 of the #90DaysOfDevOps challenge. The challenge focused on essential bash scripting skills, including comments, variables, echo, and built-in variables. Let's dive into the tasks I worked on and the scripts I wrote to accomplish each task.

## 1\. **Comments in Bash Scripts**

In bash scripts, comments are used to explain the code or temporarily disable parts of the script. The script below demonstrates how to add single-line and multi-line comments in bash.

```bash
#!/bin/bash

# This is a single-line comment
<<Info
This is a multi-line comment.
You can describe the script or add important notes here.
Info
```

### Explanation:

* The `#` is used for single-line comments.
    
* The `<<Info` and `Info` syntax is used for multi-line comments, often called a "here document."
    

---

## 2\. **Using Echo Command**

The `echo` command in bash is used to display messages to the terminal. Here's a simple script using `echo` to print a message:

```bash
#!/bin/bash

echo "Welcome to Day-08 of the 90DaysOfDevOps challenge!"
```

### Explanation:

* `echo` is used to print the string `"Welcome to Day-08 of the 90DaysOfDevOps challenge!"` to the terminal.
    

---

## 3\. **Declaring Variables**

Variables in bash are used to store data. Here's a script that declares and assigns values to variables:

```bash
#!/bin/bash

sumation=0
echo "Variable 'sumation' is initialized with value: $sumation"
```

### Explanation:

* `sumation=0` initializes the variable `sumation` with a value of `0`.
    
* `echo` prints the value of the variable.
    

---

## 4\. **Using Variables to Perform Tasks**

This script takes two numbers as input, calculates their sum, and prints the result:

```bash
#!/bin/bash

read -p "Enter number 1: " num1
read -p "Enter number 2: " num2

sumation=$(( num1 + num2 ))

echo "Summation of $num1 + $num2 = $sumation"
```

### Explanation:

* `read` is used to take user input for two numbers (`num1` and `num2`).
    
* The sum of the two numbers is calculated and stored in the variable `sumation`, which is then printed using `echo`.
    

---

## 5\. **Using Built-in Variables**

Bash provides several built-in variables that hold useful information. Here’s a script that uses a few of them:

```bash
#!/bin/bash

echo "Today's date is: $(date)"
echo "We are currently in directory: $(pwd)"
echo "User logged in: $(whoami)"
echo "Home directory: $HOME"
```

### Explanation:

* `$(date)` prints the current date and time.
    
* `$(pwd)` prints the current working directory.
    
* `$(whoami)` prints the current user logged in.
    
* `$HOME` prints the home directory of the current user.
    

---

## 6\. **Using Wildcards to List Files**

Wildcards in bash allow you to match patterns in filenames. This script uses wildcards to list all `.sh` files in a specified directory:

```bash
#!/bin/bash

read -p "Enter directory path to list .sh files: " sh_dir
cd ${sh_dir} && ls *.sh
```

### Explanation:

* The `read` command takes the directory path from the user.
    
* The `cd` command changes to the specified directory, and `ls *.sh` lists all `.sh` files in that directory.
    

---

## 7\. **Whole Script Solution**

Below is the entire script, combining all the tasks for Day 8:

```bash
#!/bin/bash

<<Info
Author : Amitabh Soni
Date : 1/12/24
Description : This script will store all tasks for Day 8 Task: Shell Scripting Challenge of 90DaysOfDevOps challenge
Info

# Task 1: Comments
# This # is used to create a single-line comment.
# The <<Info and Info are used for a multiline comment.

# Task 2: Echo Command
# The echo command is used to display text on the terminal.
echo "Welcome to Day-08 of 90DaysOfDevOps challenge"

# Task 3: Variable
# Initializing a variable 'sumation' and setting its value to 0
sumation=0

# Task 4: Using Variables
# The read command prompts the user to input a value.
# The values entered by the user are stored in the variables num1 and num2.
read -p "Enter number 1 : " num1
read -p "Enter number 2 : " num2

# Summing the two numbers entered by the user and storing the result in the 'sumation' variable.
sumation=$(( num1 + num2 ))

# Displaying the result of the summation.
echo "Summation of $num1 + $num2 : $sumation"

# Task 5: Using Built-in Variables
# Using the built-in 'date' command to display the current date and time.
echo "Today's date is : $(date)"

# Using the 'pwd' command to display the current working directory.
echo "In present we are in $(pwd)"

# Using the 'whoami' command to display the current user logged in.
echo "User is $(whoami)"

# Using the built-in variable $HOME to display the current user's home directory.
echo "Home dir : $HOME"

# Task 6: Wildcards
# The read command prompts the user to input a directory path.
# Then the script changes to that directory and lists all files with the .sh extension using the 'ls' command and wildcard.
read -p "Enter dir path to print all .sh files in that dir : " sh_dir
cd ${sh_dir} && ls *.sh

```

---

## Conclusion

This Shell Scripting Challenge provided a solid understanding of bash scripting fundamentals, including working with comments, variables, and built-in commands. It also gave hands-on experience with user input and pattern matching using wildcards. These skills are essential for automating tasks in a DevOps pipeline, and I look forward to applying them in future projects.

Stay tuned for more updates as I progress through the #90DaysOfDevOps challenge!

---

Feel free to check out my [LinkedIn](https://www.linkedin.com/in/amitabh-devops/) for more updates and my journey through the DevOps learning path!
