Using Function Arguments ($1, $2 inside function) in Bash
📖 Scenario: You are writing a small bash script to greet users by their first and last names. You want to practice how to pass arguments to a function and use $1 and $2 inside the function to access those arguments.
🎯 Goal: Build a bash script with a function called greet that takes two arguments: first name and last name. The function should print a greeting message using these arguments.
📋 What You'll Learn
Create a function named greet that accepts two arguments.
Use $1 and $2 inside the function to access the first and second arguments.
Call the function with the exact arguments John and Doe.
Print the greeting message: Hello, John Doe!
💡 Why This Matters
🌍 Real World
Passing arguments to functions is common in bash scripts to reuse code and handle dynamic input, such as user names or file names.
💼 Career
Understanding function arguments in bash is essential for automation tasks, system administration, and writing maintainable shell scripts.
Progress0 / 4 steps
1
Create the greet function
Write a bash function named greet that takes two arguments. Inside the function, do not write anything else yet.
Bash Scripting
Hint
Use the syntax function greet() { } to define the function.
2
Add variables to access arguments inside greet
Inside the greet function, use $1 and $2 to refer to the first and second arguments. Assign them to variables named first_name and last_name respectively.
Bash Scripting
Hint
Use first_name=$1 and last_name=$2 inside the function.
3
Add a greeting message inside the function
Inside the greet function, add a echo statement that prints: Hello, $first_name $last_name!
Bash Scripting
Hint
Use echo "Hello, $first_name $last_name!" to print the greeting.
4
Call the greet function with arguments
Call the greet function with the arguments John and Doe. Then run the script to print the greeting.
Bash Scripting
Hint
Call the function by writing greet John Doe after the function definition.
Practice
(1/5)
1. In a bash function, what does $1 represent?
easy
A. The first argument passed to the function
B. The name of the function
C. The total number of arguments passed to the script
D. The exit status of the last command
Solution
Step 1: Understand function arguments in bash
Inside a bash function, $1 refers to the first argument passed specifically to that function, not the script.
Step 2: Differentiate from script arguments
The script's arguments are accessed outside functions, but inside a function, $1 resets to the function's first argument.
Final Answer:
The first argument passed to the function -> Option A
Quick Check:
$1 in function = first function argument [OK]
Hint: Inside functions, $1 is the first function argument, not script's [OK]
Common Mistakes:
Confusing $1 inside function with script's $1
Thinking $1 is function name
Mixing $1 with number of arguments
2. Which of the following is the correct way to define a bash function that uses arguments $1 and $2?
easy
A. function myfunc { echo $1 $2
B. function myfunc($1, $2) { echo $1 $2 }
C. def myfunc($1, $2) { echo $1 $2 }
D. myfunc() { echo $1 $2; }
Solution
Step 1: Recall bash function syntax
Bash functions are defined using name() { commands; } or function name { commands; } without parameters in parentheses.
Step 2: Identify correct syntax for arguments
Arguments are accessed inside the function via $1, $2, not declared in parentheses.
Final Answer:
myfunc() { echo $1 $2; } -> Option D
Quick Check:
Function args accessed inside, no params in definition [OK]
Hint: Define functions with () and access args inside, no params in () [OK]
Common Mistakes:
Trying to declare parameters in function definition
Using other language syntax like def or parentheses with args
Missing semicolon or braces
3. What is the output of this script?
greet() {
echo "Hello, $1 and $2!"
}
greet Alice Bob
medium
A. Hello, $1 and $2!
B. Hello, Alice and Bob!
C. Hello, Alice and !
D. Hello, and Bob!
Solution
Step 1: Understand function call and arguments
The function greet is called with two arguments: Alice and Bob. Inside the function, $1 is Alice and $2 is Bob.
Step 2: Substitute arguments in echo
The echo command prints: "Hello, Alice and Bob!" exactly as expected.
Final Answer:
Hello, Alice and Bob! -> Option B
Quick Check:
Function args $1=Alice, $2=Bob replaced correctly [OK]
Hint: Arguments replace $1, $2 inside function call [OK]
Common Mistakes:
Expecting literal $1 and $2 printed
Mixing argument order
Forgetting to pass both arguments
4. Consider this function:
sum() {
echo $(($1 + $2))
}
sum 5
What error or output will this produce?
medium
A. bash: + : syntax error: operand expected (error token is "+ ")
B. 5
C. bash: syntax error: unexpected end of file
D. 10
Solution
Step 1: Analyze function call with missing argument
The function sum expects two arguments, but only one (5) is passed. So, $2 is empty.
Step 2: Evaluate arithmetic expression
The expression $(($1 + $2)) becomes (5 + ), which is invalid syntax causing an error about operand expected.
Final Answer:
bash: + : syntax error: operand expected (error token is "+ ") -> Option A
Quick Check:
Missing $2 causes arithmetic syntax error [OK]
Hint: Always pass all args used in arithmetic to avoid errors [OK]
Common Mistakes:
Assuming missing args default to zero
Ignoring error messages
Passing arguments incorrectly
5. You want a bash function concat that joins two strings passed as arguments with a dash between them. Which function definition correctly does this?
hard
A. concat() { echo "$1+$2"; }
B. concat() { echo "$1 $2"; }
C. concat() { echo "$1-$2"; }
D. concat() { echo "$1$2"; }
Solution
Step 1: Understand the requirement
The function should join two strings with a dash - between them.
Step 2: Check each option's output
concat() { echo "$1-$2"; } prints $1-$2 which is exactly the two strings joined by a dash. Others use space, plus, or no separator.
Final Answer:
concat() { echo "$1-$2"; } -> Option C
Quick Check:
Dash between args = concat() { echo "$1-$2"; } [OK]
Hint: Use echo "$1-$2" to join with dash inside function [OK]
Common Mistakes:
Using space or plus instead of dash
Forgetting quotes causing word splitting
Concatenating without separator
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.