Bird
Raised Fist0
Bash Scriptingscripting~20 mins

Calling functions in Bash Scripting - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Function Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
Output of a simple function call
What is the output of this Bash script?
Bash Scripting
greet() {
  echo "Hello, $1!"
}
greet World
AHello, World!
Bgreet World
CWorld
DHello, $1!
Attempts:
2 left
💡 Hint
Look at how the function uses the first argument.
💻 Command Output
intermediate
2:00remaining
Function with local variable scope
What will be the output of this script?
Bash Scripting
count=5
myfunc() {
  local count=10
  echo $count
}
myfunc
echo $count
A
5
5
B
5
10
C
10
10
D
10
5
Attempts:
2 left
💡 Hint
Remember local variables inside functions do not change outside variables.
📝 Syntax
advanced
2:00remaining
Identify the syntax error in function definition
Which option contains a syntax error in defining a Bash function?
Amyfunc() { echo "Hello"; }
Bmyfunc() echo "Hello"
Cfunction myfunc { echo "Hello"; }
Dfunction myfunc() { echo "Hello"; }
Attempts:
2 left
💡 Hint
Check if the function body is properly enclosed.
🔧 Debug
advanced
2:00remaining
Why does this function not print the argument?
Given this script, why does it print nothing? myfunc() { echo $name } myfunc John
AThe function does not use $1 to access the argument
BThe function name is invalid
CThe echo command is missing quotes
DThe function is not called correctly
Attempts:
2 left
💡 Hint
How do functions access passed arguments in Bash?
🚀 Application
expert
2:00remaining
Function calling another function with output capture
What is the output of this script?
Bash Scripting
get_date() {
  date +"%Y-%m-%d"
}
print_message() {
  local today=$(get_date)
  echo "Today is $today"
}
print_message
AToday is
BToday is $(get_date)
CToday is 2024-06-01
Dget_date: command not found
Attempts:
2 left
💡 Hint
The inner function output is captured with $(...).

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