Introduction to Shell Scripting Basics

Shell scripting is a powerful way to automate tasks and manage system operations in a Unix/Linux environment. This blog post will cover the essential elements needed to get started with shell scripts, including the shebang, comments, variables, user input, basic commands, conditional statements, loops, functions, file operations, and script execution.

1. Shebang (#!/bin/bash)

Every shell script begins with a shebang line, which tells the system which interpreter should be used to execute the script. For bash scripts, the line looks like this:

#!/bin/bash

2. Comments

Comments are essential for making your scripts more understandable. Any line that starts with a # will be ignored by the shell, allowing you to include explanations and notes in your code.

# This is a comment

3. Variables

Variables in shell scripts are used to store values and can be referenced using the $ symbol. Here’s how to define and use a variable:

#!/bin/bash
name="John"
echo "Hello, $name"

4. Reading User Input

You can also prompt users for input and store that input into variables. Here’s an example:

#!/bin/bash
echo "Enter your name:"
read name
echo "Hello, $name"

5. Basic Commands

Shell scripts can execute any command that you would normally run in the terminal. For example, listing files in the current directory can be done with:

#!/bin/bash
echo "Listing files in the current directory:"
ls

6. Conditional Statements

Conditional statements allow you to execute code based on certain conditions. You can use if, else, and elif for this purpose:

#!/bin/bash
echo "Enter a number:"
read number
if [ $number -gt 10 ]; then
    echo "The number is greater than 10."
else
    echo "The number is 10 or less."
fi

7. Loops

Loops are useful for repeating commands. Here’s how you can implement both for and while loops:

For Loop

#!/bin/bash
for i in 1 2 3 4 5; do
    echo "Number: $i"
done

While Loop

#!/bin/bash
count=1
while [ $count -le 5 ]; do
    echo "Count: $count"
    count=$((count + 1))
done

8. Functions

Functions allow you to encapsulate commands into reusable blocks of code. Define a function as follows:

#!/bin/bash
greet() {
    echo "Hello, $1"
}
greet "Alice"
greet "Bob"

9. File Operations

You can perform various file operations, such as creating, reading, writing, and deleting files within a script.

Create a File

#!/bin/bash
echo "This is a sample file." > sample.txt

Append to a File

#!/bin/bash
echo "This is appended text." >> sample.txt

Read from a File

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

Delete a File

#!/bin/bash
rm sample.txt

10. Script Execution

Once you’ve written your shell script, you need to make it executable. Use the chmod command for this:

chmod +x your_script.sh

To run the script, just use:

./your_script.sh

Example Scripts

Here are a few simple example scripts that illustrate the concepts discussed:

Hello World Script

#!/bin/bash
echo "Hello, World!"

User Input and Greeting Script

#!/bin/bash
echo "Enter your name:"
read name
echo "Hello, $name!"

File Listing Script

#!/bin/bash
echo "Listing files in the current directory:"
ls

Simple Calculation Script

#!/bin/bash
echo "Enter two numbers:"
read num1
read num2
sum=$((num1 + num2))
echo "Sum of $num1 and $num2 is: $sum"

Simple Menu Selection

#!/bin/bash
echo "Menu Selection:"
echo "1. Display Date and Time"
echo "2. Display Calendar"
echo "3. Display Disk Usage"
read choice
case $choice in
    1) echo "Current date and time: $(date)";;
    2) cal;;
    3) df -h;;
    *) echo "Invalid choice";;
esac

Conclusion

This overview gives you a foundational understanding of basic shell scripting. From defining variables to reading user input and using conditional statements, these elements will empower you to automate tasks efficiently. As you continue to explore shell scripting, you can build more complex scripts and leverage additional commands tailored to your needs.

Happy scripting!