Bird
Raised Fist0
Bash Scriptingscripting~10 mins

Function definition in Bash Scripting - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Function definition
Start script
↓
Define function
↓
Call function
↓
Execute function body
↓
Return to main script
↓
End script
The script starts by defining a function, then calls it, executes its body, and returns to the main script until the script ends.
Execution Sample
Bash Scripting
greet() {
  echo "Hello, $1!"
}

greet Alice
Defines a function greet that prints a hello message with the given name, then calls it with 'Alice'.
Execution Table
StepActionEvaluationOutput
1Define function greetFunction greet is stored
2Call function greet with argument 'Alice'Function greet starts
3Execute echo "Hello, $1!" inside greetSubstitute $1 with 'Alice'Hello, Alice!
4Return from function greetBack to main script
5Script endsNo more commands
💡 Script ends after function call completes
Variable Tracker
VariableStartAfter Call 1Final
$1undefinedAliceundefined after function ends
Key Moments - 2 Insights
Why does $1 have the value 'Alice' only inside the function?
Because $1 is a special variable holding the first argument passed to the function, as shown in execution_table step 3.
What happens if we call the function without arguments?
Then $1 is empty inside the function, so the echo prints 'Hello, !' as no argument is passed, similar to step 3 but with empty substitution.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is printed at step 3?
Agreet Alice
BHello, $1!
CHello, Alice!
DFunction greet is stored
💡 Hint
Check the Output column at step 3 in the execution_table
At which step does the function greet start executing?
AStep 2
BStep 3
CStep 1
DStep 4
💡 Hint
Look at the Action and Evaluation columns to find when the function starts
If we call greet with 'Bob' instead of 'Alice', what changes in variable_tracker after call 1?
A$1 becomes Alice
B$1 becomes Bob
C$1 remains undefined
DNo change
💡 Hint
Refer to variable_tracker row for $1 and imagine replacing 'Alice' with 'Bob'
Concept Snapshot
Function definition in bash:
function_name() {
  commands
}
Call with: function_name args
$1, $2... hold arguments inside function
Function runs when called, not when defined
Use functions to reuse code blocks
Full Transcript
This example shows how to define a function in bash scripting. The function greet is defined with greet() { ... }. Inside, it uses echo to print a message including the first argument $1. When the script calls greet Alice, the function runs and prints 'Hello, Alice!'. The variable $1 holds the argument only inside the function. After the function finishes, the script continues and ends. This teaches how functions are defined, called, and how arguments work in bash.

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

  1. Step 1: Understand bash function syntax

    Bash functions are defined using either name() { commands; } or function name { commands; }.
  2. 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.
  3. Final Answer:

    greet() { echo "Hello"; } -> Option A
  4. 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

  1. Step 1: Recall valid bash function syntax

    Bash allows defining functions as function name() { commands; } or name() { commands; }.
  2. 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.
  3. Final Answer:

    function myFunc() { echo "Hi"; } -> Option A
  4. 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

  1. Step 1: Understand function call with argument

    The function say_hello takes one argument and prints it using $1.
  2. Step 2: Substitute argument and print

    Calling say_hello Alice replaces $1 with "Alice", so output is "Hello, Alice!".
  3. Final Answer:

    Hello, Alice! -> Option B
  4. 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

  1. Step 1: Check function syntax with 'function' keyword

    Bash allows function name() { commands; } or function name { commands; }. Parentheses after the name are optional.
  2. Step 2: Identify if there's an error

    The code function greet { echo "Hi"; } is valid syntax.
  3. Final Answer:

    No error; parentheses are optional with 'function' keyword -> Option D
  4. 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

  1. Step 1: Understand arithmetic in bash functions

    To add numbers, use arithmetic expansion $(()) inside echo.
  2. 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.
  3. Final Answer:

    sum() { echo $(($1 + $2)); } -> Option C
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard