📖 Scenario: You work as a system administrator. You often need to check disk usage on multiple servers and alert if usage is too high. Instead of writing new scripts every time, you use a common pattern to automate this task easily.
🎯 Goal: Build a simple bash script that uses a pattern to check disk usage and alerts if usage exceeds a set threshold.
📋 What You'll Learn
Create a variable with a sample disk usage value
Create a variable for the usage threshold
Use an if statement to compare usage with threshold
Print an alert message if usage is above threshold
💡 Why This Matters
🌍 Real World
System administrators often monitor disk usage to prevent servers from running out of space. Using this pattern, they can automate alerts and take action quickly.
💼 Career
Knowing how to write simple bash scripts with conditions is essential for automation tasks in IT and DevOps roles.
Progress0 / 4 steps
1
Create a variable with disk usage
Create a variable called disk_usage and set it to the value 85 to represent disk usage percentage.
Bash Scripting
Hint
Use disk_usage=85 to assign the value.
2
Set the usage threshold
Create a variable called threshold and set it to 80 to represent the alert threshold percentage.
Bash Scripting
Hint
Use threshold=80 to assign the value.
3
Compare disk usage with threshold
Use an if statement to check if disk_usage is greater than threshold. Inside the if, write a command to print "Alert: Disk usage is high!".
Bash Scripting
Hint
Use if [ "$disk_usage" -gt "$threshold" ] and echo inside.
4
Print the alert message
Run the script and print the alert message if disk usage is above threshold.
Bash Scripting
Hint
Run the script using bash script.sh or execute the commands directly.
Practice
(1/5)
1. Why are patterns useful in bash scripting automation?
easy
A. They provide reusable solutions to common tasks.
B. They make scripts run faster by using special commands.
C. They allow scripts to run without any errors always.
D. They automatically fix bugs in your code.
Solution
Step 1: Understand what patterns mean in scripting
Patterns are common ways to solve repeated problems efficiently.
Step 2: Identify the benefit of using patterns
They save time and reduce errors by reusing tested solutions.
Final Answer:
They provide reusable solutions to common tasks. -> Option A
Quick Check:
Patterns = reusable solutions [OK]
Hint: Patterns = repeatable solutions that save time [OK]
Common Mistakes:
Thinking patterns speed up script execution
Believing patterns fix all bugs automatically
Confusing patterns with error-free guarantees
2. Which of the following is the correct syntax to start a bash script with a pattern for error handling?
easy
A. #!/bin/bash
error -set
B. #!/bin/bash
set -e
C. #!/bin/bash
set error
D. #!/bin/bash
set +e
Solution
Step 1: Recall the standard bash shebang line
It starts with #!/bin/bash to specify the interpreter.
Step 2: Identify the correct command to stop on errors
set -e tells bash to exit on any error, a common pattern.
Final Answer:
#!/bin/bash
set -e -> Option B
Quick Check:
set -e = exit on error pattern [OK]
Hint: Use 'set -e' to stop script on errors [OK]
Common Mistakes:
Using 'set +e' which disables error exit
Writing 'error -set' which is invalid syntax
Confusing 'set error' as a command
3. What will be the output of this script snippet using a common pattern to loop over files?
for file in *.txt; do
echo "$file"
done
medium
A. Prints the string '*.txt' literally
B. Throws an error if no .txt files exist
C. Lists all files ending with .txt in the current directory
D. Lists all files in the directory regardless of extension
Solution
Step 1: Understand the for loop pattern over files
The loop iterates over all files matching the pattern '*.txt'.
Step 2: Determine what echo prints each iteration
It prints the current filename matching the pattern.
Final Answer:
Lists all files ending with .txt in the current directory -> Option C
Quick Check:
for file in *.txt = list .txt files [OK]
Hint: for file in *.txt loops over matching files [OK]
Common Mistakes:
Expecting literal '*.txt' output
Assuming error if no matches (depends on shell settings)
Thinking it lists all files, not filtered
4. This script is intended to stop on errors but does not. What is the error?
#!/bin/bash
set +e
cp file1.txt file2.txt
medium
A. Using 'set +e' disables exit on error, so script continues
B. Missing quotes around filenames causes error
C. The shebang line is incorrect
D. The cp command syntax is wrong
Solution
Step 1: Check the meaning of 'set +e'
It disables the exit-on-error behavior, allowing script to continue.
Step 2: Understand why script does not stop on error
Because 'set +e' is used, errors won't stop the script.
Final Answer:
Using 'set +e' disables exit on error, so script continues -> Option A
Quick Check:
set +e disables error exit [OK]
Hint: Use 'set -e' to stop on errors, not 'set +e' [OK]
Common Mistakes:
Confusing +e and -e options
Thinking quotes are mandatory for cp here
Assuming shebang line causes error
5. You want to create a bash script pattern that processes only non-empty text files in a directory. Which snippet correctly applies this pattern?
hard
A. for f in *.txt; do echo "$f"; done
B. for f in *.txt; do if [[ -z "$f" ]]; then echo "$f"; fi; done
C. for f in *.txt; do if [[ -f "$f" ]]; then echo "$f"; fi; done
D. for f in *.txt; do if [[ -s "$f" ]]; then echo "$f"; fi; done
Solution
Step 1: Identify the test for non-empty files
Using [[ -s "$f" ]] checks if file size is greater than zero (non-empty).
Step 2: Confirm the loop processes only .txt files and echoes them if non-empty
The loop iterates over *.txt files and echoes only those passing the size test.
Final Answer:
for f in *.txt; do if [[ -s "$f" ]]; then echo "$f"; fi; done -> Option D
Quick Check:
Use [[ -s file ]] to check non-empty files [OK]
Hint: Use [[ -s file ]] to filter non-empty files [OK]
Common Mistakes:
Using [[ -z ]] which checks for empty files
Using only [[ -f ]] which checks if file exists but not size
Not filtering files at all
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.