📖 Scenario: You are creating a small bash script to greet users by name. This script will use a function to keep the greeting message reusable and neat.
🎯 Goal: Build a bash script that defines a function called greet which takes a name as input and prints a greeting message. Then call this function with a specific name.
📋 What You'll Learn
Create a function named greet
The function should accept one argument (a name)
The function should print Hello, <name>! where <name> is the argument
Call the greet function with the name Alice
Print the greeting message to the terminal
💡 Why This Matters
🌍 Real World
Functions in bash scripts help automate repetitive tasks like sending messages, processing files, or managing system settings.
💼 Career
Knowing how to write and use functions in bash is essential for system administrators, DevOps engineers, and anyone automating tasks on Linux or Unix systems.
Progress0 / 4 steps
1
Create a function named greet
Write a bash function named greet that takes one argument called name. Inside the function, write a comment # Function to greet a user.
Bash Scripting
Hint
Start your function with function greet() { and end with }. Use a comment inside the function.
2
Add code to print a greeting message inside the greet function
Inside the greet function, write a echo command that prints Hello, <name>! where <name> is the first argument passed to the function, accessed as $1.
Bash Scripting
Hint
Use echo "Hello, $1!" to print the greeting with the first argument.
3
Call the greet function with the name Alice
After the function definition, call the greet function with the argument Alice to print the greeting.
Bash Scripting
Hint
Call the function by writing greet Alice after the function.
4
Print the greeting message
Run the script so that it prints the greeting message Hello, Alice! to the terminal.
Bash Scripting
Hint
Make sure you run the script and see the output Hello, Alice! in the terminal.
Practice
(1/5)
1. What is the correct way to define a function named greet in bash?
easy
A. greet() { echo "Hello"; }
B. function greet[] { echo "Hello"; }
C. def greet() { echo "Hello"; }
D. function greet() echo "Hello"
Solution
Step 1: Understand bash function syntax
Bash functions are defined using either name() { commands; } or function name { commands; }.
Step 2: Check each option
greet() { echo "Hello"; } uses the correct syntax with parentheses and braces. Options B, C, and D have syntax errors or use wrong keywords.
Final Answer:
greet() { echo "Hello"; } -> Option A
Quick Check:
Function syntax = greet() { ... } [OK]
Hint: Use parentheses and braces to define bash functions [OK]
Common Mistakes:
Using square brackets instead of parentheses
Using Python 'def' keyword
Omitting braces around commands
2. Which of the following is a valid function definition syntax in bash?
easy
A. function myFunc() { echo "Hi"; }
B. myFunc[] { echo "Hi"; }
C. function myFunc[] echo "Hi"
D. myFunc() echo "Hi"
Solution
Step 1: Recall valid bash function syntax
Bash allows defining functions as function name() { commands; } or name() { commands; }.
Step 2: Evaluate options
function myFunc() { echo "Hi"; } matches valid syntax. Options A and C use square brackets incorrectly. myFunc() echo "Hi" misses braces around commands.
Final Answer:
function myFunc() { echo "Hi"; } -> Option A
Quick Check:
Valid syntax includes 'function name() { ... }' [OK]
Hint: Remember to use braces {} to group commands in functions [OK]
Common Mistakes:
Using square brackets instead of parentheses
Omitting braces after function name
Missing parentheses after function name
3. What will be the output of this bash script?
say_hello() {
echo "Hello, $1!"
}
say_hello Alice
medium
A. Error: function not found
B. Hello, Alice!
C. say_hello Alice
D. Hello, $1!
Solution
Step 1: Understand function call with argument
The function say_hello takes one argument and prints it using $1.
Step 2: Substitute argument and print
Calling say_hello Alice replaces $1 with "Alice", so output is "Hello, Alice!".
Final Answer:
Hello, Alice! -> Option B
Quick Check:
Function argument $1 = Alice [OK]
Hint: Use $1 to access first argument inside bash functions [OK]
Common Mistakes:
Printing literal $1 instead of its value
Forgetting to call the function
Syntax errors in function definition
4. Identify the error in this bash function definition:
function greet {
echo "Hi"
}
medium
A. Missing parentheses after function name
B. Missing braces around commands
C. Missing semicolon after echo
D. No error; parentheses are optional with 'function' keyword
Solution
Step 1: Check function syntax with 'function' keyword
Bash allows function name() { commands; } or function name { commands; }. Parentheses after the name are optional.
Step 2: Identify if there's an error
The code function greet { echo "Hi"; } is valid syntax.
Final Answer:
No error; parentheses are optional with 'function' keyword -> Option D
Quick Check:
function name { ... } [OK]
Hint: Parentheses () are optional with 'function name' [OK]
Common Mistakes:
Omitting parentheses after function name
Confusing braces and parentheses
Assuming semicolon needed after echo
5. You want to create a bash function sum that takes two numbers and prints their sum. Which function definition correctly does this?
hard
A. function sum { echo $1 + $2; }
B. sum() { echo $1 + $2; }
C. sum() { echo $(($1 + $2)); }
D. sum() { echo $1 $2; }
Solution
Step 1: Understand arithmetic in bash functions
To add numbers, use arithmetic expansion $(()) inside echo.
Step 2: Evaluate each option
sum() { echo $(($1 + $2)); } correctly sums $1 and $2 using $(($1 + $2)). Options A and B print strings with plus sign, not sum. sum() { echo $1 $2; } prints numbers without adding.
Final Answer:
sum() { echo $(($1 + $2)); } -> Option C
Quick Check:
Use $(()) for arithmetic in bash functions [OK]
Hint: Use $(()) to perform math inside bash functions [OK]
Common Mistakes:
Printing variables without arithmetic expansion
Omitting parentheses for function definition
Using 'function' without parentheses
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.