What does the special variable $0 represent in a bash script?
$0 holds the name of the script or command being executed. It helps you know which script is running.
Click to reveal answer
beginner
What information does $1 provide in a bash script?
$1 is the first argument passed to the script. If you run ./script.sh hello, then $1 is hello.
Click to reveal answer
beginner
Explain the purpose of $# in bash scripting.
$# tells you how many arguments were passed to the script. It helps check if the user gave the right number of inputs.
Click to reveal answer
intermediate
What does $@ represent in a bash script?
$@ is all the arguments passed to the script, treated as separate words. Useful to loop over all inputs.
Click to reveal answer
intermediate
What is the use of $? and $$ in bash?
$? shows the exit status of the last command (0 means success). $$ is the process ID of the current shell, useful for unique temp files.
Click to reveal answer
In a bash script, what does $# represent?
AThe number of arguments passed to the script
BThe name of the script
CThe first argument
DThe process ID of the script
✗ Incorrect
$# counts how many arguments you gave to the script.
Which special variable holds the exit status of the last command?
A$0
B$?
C$@
D$$
✗ Incorrect
$? tells if the last command worked (0) or failed (non-zero).
If you want to access all arguments passed to a bash script as separate words, which variable do you use?
A$1
B$0
C$#
D$@
✗ Incorrect
$@ holds all arguments separately, perfect for loops.
What does $$ represent in a bash script?
AThe process ID of the current script
BThe script name
CThe first argument
DThe number of arguments
✗ Incorrect
$$ is the unique ID of the running script process.
What value does $0 hold inside a bash script?
AThe last argument
BThe number of arguments
CThe script's filename or command name
DThe exit status of last command
✗ Incorrect
$0 is the name of the script or command you ran.
Describe the purpose of each special variable: $0, $1, $#, $@, $?, and $$ in bash scripting.
Think about what each variable tells you about the script or its inputs.
You got /6 concepts.
How would you use special variables to check if a user passed exactly two arguments to your bash script?
Counting arguments helps control script behavior.
You got /3 concepts.
Practice
(1/5)
1. In a bash script, what does the special variable $# represent?
easy
A. The exit status of the last command
B. The name of the script
C. The number of arguments passed to the script
D. The process ID of the script
Solution
Step 1: Understand the role of $#
The variable $# in bash holds the count of all arguments passed to the script.
Step 2: Differentiate from other special variables
$0 is the script name, $$ is the process ID, and $? is the last command's exit status, so they don't represent argument count.
Final Answer:
The number of arguments passed to the script -> Option C
Quick Check:
$# = argument count [OK]
Hint: Remember: '#' means count, so $# counts arguments [OK]
Common Mistakes:
Confusing $# with $@ which holds all arguments
Thinking $0 is the argument count
Mixing up $? with argument count
2. Which of the following is the correct way to print the first argument passed to a bash script?
easy
A. echo $1
B. echo $0
C. echo $#
D. echo $$
Solution
Step 1: Identify the variable for the first argument
$1 holds the first argument passed to the script.
Step 2: Check other options
$0 is the script name, $# is the argument count, and $$ is the script's process ID, so they are incorrect for printing the first argument.
Final Answer:
echo $1 -> Option A
Quick Check:
First argument = $1 [OK]
Hint: Use $1 to access the first argument in bash scripts [OK]
Common Mistakes:
Using $0 instead of $1 for first argument
Confusing $# with argument value
Trying to print $$ for argument
3. Consider the script ./myscript.sh apple banana with this content:
echo "$0"
echo "$1"
echo "$#"
echo "$@"
echo "$$"
What will be the output of the third line echo "$#"?
medium
A. myscript.sh
B. 3
C. apple
D. 2
Solution
Step 1: Count the arguments passed
The script is called with two arguments: 'apple' and 'banana'. So, the count is 2.
Step 2: Understand what $# prints
$# prints the number of arguments, which is 2 here.
Final Answer:
2 -> Option D
Quick Check:
Arguments count = 2 [OK]
Hint: Count arguments after script name for $# [OK]
Common Mistakes:
Counting script name as argument
Confusing $@ with $#
Expecting argument values instead of count
4. You wrote this script snippet:
echo "Last command status: $?"
ls /nonexistent
But it always prints Last command status: 0 even if the directory doesn't exist. What is the problem?
medium
A. The ls command is correct, no problem
B. The echo runs before ls, so $? is from previous command
C. You should use $$ instead of $?
D. You need to quote $? differently
Solution
Step 1: Understand when $? is evaluated
$? holds the exit status of the last command executed before it.
Step 2: Check command order
The echo runs first, so it shows the status of the command before echo, not ls.
Final Answer:
The echo runs before ls, so $? is from previous command -> Option B
Quick Check:
Check command order for $? [OK]
Hint: Print $? immediately after the command to get correct status [OK]
Common Mistakes:
Using $$ instead of $? for exit status
Printing $? before running the command
Assuming $? holds script PID
5. You want to write a bash script that prints its own process ID and all arguments passed to it on separate lines. Which script snippet correctly does this?
hard
A. echo "PID: $$"
echo "Args: $@"
B. echo "PID: $0"
echo "Args: $#"
C. echo "PID: $?"
echo "Args: $1"
D. echo "PID: $1"
echo "Args: $$"
Solution
Step 1: Identify variable for process ID
$$ holds the current script's process ID.
Step 2: Identify variable for all arguments
$@ holds all arguments passed to the script as separate words.
Final Answer:
echo "PID: $$"
echo "Args: $@" -> Option A
Quick Check:
PID = $$, all args = $@ [OK]
Hint: Use $$ for PID and $@ for all arguments [OK]
Common Mistakes:
Using $0 as PID instead of $$
Using $# (count) instead of $@ (all args)
Mixing $1 (first arg) with PID
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.