Bird
Raised Fist0
Bash Scriptingscripting~5 mins

Calling functions in Bash Scripting - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Calling functions
O(n)
Understanding Time Complexity

When we call functions in a bash script, it is important to know how the time to run the script changes as we call these functions more or with bigger inputs.

We want to understand how the number of function calls affects the total work done.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

function greet() {
  echo "Hello, $1!"
}

for name in Alice Bob Charlie Dave Eve; do
  greet "$name"
done

This script defines a function that prints a greeting, then calls it once for each name in a list of five names.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Calling the greet function inside a loop.
  • How many times: Once for each name in the list (5 times here, but depends on list size).
How Execution Grows With Input

Each time we add one more name, the function is called one more time, so the total work grows directly with the number of names.

Input Size (n)Approx. Operations
1010 function calls
100100 function calls
10001000 function calls

Pattern observation: The total work grows in a straight line as the input size grows.

Final Time Complexity

Time Complexity: O(n)

This means the time to run the script grows directly in proportion to the number of function calls.

Common Mistake

[X] Wrong: "Calling a function once or multiple times does not affect the total time much."

[OK] Correct: Each function call takes time, so calling it many times adds up and increases total running time.

Interview Connect

Understanding how function calls add up helps you write scripts that run efficiently and shows you can think about how your code behaves as it grows.

Self-Check

"What if the function itself contained a loop that runs n times? How would the time complexity change?"

Practice

(1/5)
1. In Bash scripting, how do you call a function named greet?
easy
A. Write greet() with parentheses.
B. Write call greet().
C. Just write greet on a line by itself.
D. Write run greet.

Solution

  1. Step 1: Understand Bash function call syntax

    In Bash, functions are called by simply writing their name without parentheses or keywords.
  2. Step 2: Compare options with Bash syntax

    Only Just write greet on a line by itself. matches the correct way: just the function name alone.
  3. Final Answer:

    Just write greet on a line by itself. -> Option C
  4. Quick Check:

    Function call = function name alone [OK]
Hint: Call functions by name only, no parentheses needed [OK]
Common Mistakes:
  • Adding parentheses like in other languages
  • Using keywords like 'call' or 'run'
  • Forgetting to write the function name
2. Which of the following is the correct syntax to define a function named hello in Bash?
easy
A. hello { echo "Hi" }
B. hello() { echo "Hi" }
C. def hello() { echo "Hi" }
D. function hello() echo "Hi"

Solution

  1. Step 1: Recall Bash function definition syntax

    Bash functions are defined as name() { commands; } or with the keyword function followed by name and braces.
  2. Step 2: Check each option

    hello() { echo "Hi" } uses hello() { echo "Hi" }, which is correct. hello { echo "Hi" } misses the () after the name. def hello() { echo "Hi" } uses Python syntax. function hello() echo "Hi" misses braces.
  3. Final Answer:

    hello() { echo "Hi" } -> Option B
  4. Quick Check:

    Function syntax = name() { commands } [OK]
Hint: Use name() { commands } to define functions in Bash [OK]
Common Mistakes:
  • Using Python or other language syntax
  • Omitting parentheses or braces
  • Misplacing the function keyword
3. What is the output of this script?
say_hello() {
  echo "Hello, $1!"
}
say_hello Alice
medium
A. Hello, Alice!
B. Hello, $1!
C. say_hello Alice
D. Error: function not found

Solution

  1. Step 1: Understand function and argument usage

    The function say_hello prints "Hello," followed by the first argument $1.
  2. Step 2: Identify the argument passed

    The function is called with argument "Alice", so $1 becomes "Alice".
  3. Final Answer:

    Hello, Alice! -> Option A
  4. Quick Check:

    Function argument $1 = Alice [OK]
Hint: Use $1 to access first argument inside function [OK]
Common Mistakes:
  • Printing literal $1 instead of its value
  • Forgetting to pass argument
  • Misunderstanding function call syntax
4. Identify the error in this script:
greet() {
  echo "Hi $name"
}
greet John
medium
A. Function greet is not defined correctly
B. Missing semicolon after echo
C. Function call syntax is wrong
D. Variable $name is not set or passed

Solution

  1. Step 1: Check variable usage inside function

    The function uses $name, but no variable named name is set or passed.
  2. Step 2: Check function call and argument passing

    The function is called with "John" as argument, but the function does not use $1 to access it.
  3. Final Answer:

    Variable $name is not set or passed -> Option D
  4. Quick Check:

    Use $1 to access arguments, not undefined variables [OK]
Hint: Use $1 inside function to get passed arguments [OK]
Common Mistakes:
  • Using undefined variables instead of $1
  • Assuming arguments auto-assign to variable names
  • Ignoring function call syntax correctness
5. You want to write a Bash function sum that takes two numbers as arguments and prints their sum. Which script correctly calls the function and prints the result?
hard
A.
sum() {
  echo $(($1 + $2))
}
sum 3 5
B.
sum() {
  echo $1 + $2
}
sum 3 5
C.
sum() {
  echo $((1 + 2))
}
sum 3 5
D.
sum() {
  echo $1 $2
}
sum 3 5

Solution

  1. Step 1: Understand arithmetic evaluation in Bash

    To add numbers, use $((expression)). Inside, use $1 and $2 for arguments.
  2. Step 2: Check each option's output

    sum() {
      echo $(($1 + $2))
    }
    sum 3 5
    correctly sums $1 + $2.
    sum() {
      echo $1 + $2
    }
    sum 3 5
    prints literal string with plus sign.
    sum() {
      echo $((1 + 2))
    }
    sum 3 5
    adds 1 and 2 literally, ignoring arguments.
    sum() {
      echo $1 $2
    }
    sum 3 5
    prints arguments separated by space.
  3. Final Answer:

    sum() { echo $(($1 + $2)) } sum 3 5 -> Option A
  4. Quick Check:

    Use $(( $1 + $2 )) for sum [OK]
Hint: Use $(( $1 + $2 )) to add arguments inside function [OK]
Common Mistakes:
  • Printing arguments without arithmetic evaluation
  • Using fixed numbers instead of arguments
  • Confusing string concatenation with addition
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