📖 Scenario: You are a system administrator who wants to write a safe and error-free Bash script to automate a simple task. You will learn how to use ShellCheck, a tool that helps find mistakes in your Bash scripts before running them.
🎯 Goal: Create a Bash script that prints a greeting message. Then, use ShellCheck to find and fix a common mistake in the script. Finally, run the fixed script to see the correct output.
📋 What You'll Learn
Create a Bash script file named greet.sh with a greeting message.
Add a variable called name with the value World.
Use ShellCheck to find a warning about quoting the variable.
Fix the script by adding quotes around the variable.
Run the fixed script and print the greeting message.
💡 Why This Matters
🌍 Real World
System administrators and developers use ShellCheck to catch errors in Bash scripts before running them, saving time and avoiding bugs.
💼 Career
Knowing how to use ShellCheck is valuable for anyone writing or maintaining shell scripts in IT, DevOps, and software development roles.
Progress0 / 4 steps
1
Create the initial Bash script
Create a file named greet.sh and write a Bash script that sets a variable called name to World and prints Hello, $name! without quotes around $name.
Bash Scripting
Hint
Remember to write the variable assignment without spaces around the equals sign. Use echo to print the message.
2
Run ShellCheck to find warnings
Run shellcheck greet.sh in the terminal to check the script. Add a comment in the script that says # shellcheck disable=SC2086 above the echo line to temporarily disable the warning about unquoted variables.
Bash Scripting
Hint
Use the exact comment # shellcheck disable=SC2086 on the line before echo.
3
Fix the script by quoting the variable
Remove the shellcheck disable comment. Edit the echo line to add double quotes around $name like echo "Hello, $name!" to fix the warning properly.
Bash Scripting
Hint
Put double quotes around $name inside the echo command to prevent word splitting.
4
Run the fixed script and print output
Run the fixed script ./greet.sh in the terminal and print the output. Write a command to run the script and a command to print the output.
Bash Scripting
Hint
Make sure the script has execute permission with chmod +x greet.sh before running it.
Practice
(1/5)
1. What is the main purpose of using ShellCheck in shell scripting?
easy
A. To find errors and suggest fixes before running the script
B. To execute the script faster
C. To convert shell scripts to Python
D. To add colors to the terminal output
Solution
Step 1: Understand what ShellCheck does
ShellCheck is a tool that analyzes shell scripts without running them to find mistakes.
Step 2: Identify the main benefit
It helps catch errors early, like missing quotes or bad syntax, making scripts safer.
Final Answer:
To find errors and suggest fixes before running the script -> Option A
Quick Check:
ShellCheck finds errors [OK]
Hint: ShellCheck checks scripts for errors before execution [OK]
Common Mistakes:
Thinking ShellCheck runs the script
Believing it speeds up script execution
Confusing it with a code converter
2. Which of the following is the correct way to run ShellCheck on a script named myscript.sh?
easy
A. bash shellcheck myscript.sh
B. checkshell myscript.sh
C. run shellcheck myscript.sh
D. shellcheck myscript.sh
Solution
Step 1: Recall the ShellCheck command syntax
The correct command to run ShellCheck is simply shellcheck followed by the script name.
Step 2: Verify the options
Options B, C, and D use incorrect command names or extra words.
Final Answer:
shellcheck myscript.sh -> Option D
Quick Check:
Use 'shellcheck scriptname' [OK]
Hint: Use 'shellcheck' command followed by script name [OK]
Common Mistakes:
Typing 'checkshell' instead of 'shellcheck'
Adding extra words like 'run' before the command
Using 'bash shellcheck' which is invalid
3. Given this script echo Hello $name and running shellcheck script.sh, what warning will ShellCheck most likely show?
medium
A. SC1000: Syntax error near unexpected token.
B. SC2001: Use 'sed' instead of 'echo'.
C. SC2086: Double quote to prevent globbing and word splitting.
D. No warnings, script is perfect.
Solution
Step 1: Understand ShellCheck's common warnings
ShellCheck warns when variables are unquoted because it can cause word splitting or globbing.
Step 2: Match warning to the script
The script uses $name without quotes, so ShellCheck will warn about missing quotes (SC2086).
Final Answer:
SC2086: Double quote to prevent globbing and word splitting. -> Option C
Quick Check:
Unquoted variables cause SC2086 warning [OK]
Hint: Look for unquoted variables to spot SC2086 warnings [OK]
Common Mistakes:
Expecting syntax errors for simple echo
Thinking no warning appears for unquoted variables
Confusing warning codes with unrelated messages
4. You have this script snippet:
if [ $count -eq 10 ]; then
echo "Count is 10"
fi
ShellCheck reports an error. What is the best fix?
medium
A. Add quotes around $count: if [ "$count" -eq 10 ]; then
B. Remove the spaces inside [ ]
C. Change -eq to ==
D. Add a semicolon after echo statement
Solution
Step 1: Identify the ShellCheck warning cause
Using $count without quotes can cause errors if $count is empty or contains spaces.
Step 2: Apply the fix
Adding quotes around $count ensures the test works safely even if the variable is empty.
Final Answer:
Add quotes around $count: if [ "$count" -eq 10 ]; then -> Option A