Bird
Raised Fist0
Bash Scriptingscripting~20 mins

Function libraries (sourcing scripts) in Bash Scripting - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Function Library Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the output when sourcing a script with a function?
Consider two bash scripts:

lib.sh:
greet() {
  echo "Hello, $1!"
}

main.sh:
#!/bin/bash
source ./lib.sh
greet "Alice"

What will be the output when running bash main.sh?
Bash Scripting
lib.sh:
greet() {
  echo "Hello, $1!"
}

main.sh:
#!/bin/bash
source ./lib.sh
greet "Alice"
AHello, Alice!
Bgreet: command not found
CHello, $1!
DNo output
Attempts:
2 left
💡 Hint
Sourcing a script runs its code in the current shell, making functions available.
📝 Syntax
intermediate
1:30remaining
Identify the correct syntax to source a script in bash
Which of the following lines correctly sources a script named utils.sh in bash?
Ainclude utils.sh
B. utils.sh
Csource utils.sh
Dimport utils.sh
Attempts:
2 left
💡 Hint
In bash, sourcing can be done with 'source' or a dot.
🔧 Debug
advanced
2:30remaining
Why does the function not get recognized after sourcing?
You have a script functions.sh with:
say_hello() {
  echo "Hi!"
}

You run another script:
#!/bin/bash
source ./functions.sh
say_hello

But you get:
./main.sh: line 3: say_hello: command not found

What is the most likely cause?
Afunctions.sh has Windows line endings causing sourcing to fail
Bsay_hello function is private and cannot be sourced
Csource command is misspelled
Dsay_hello is not defined because functions.sh is empty
Attempts:
2 left
💡 Hint
Check the file format of the sourced script.
🚀 Application
advanced
2:30remaining
How to use a function library with parameters in bash
You want to create a reusable bash function library mathlib.sh with a function add that adds two numbers and prints the result. Then you want to use it in calc.sh. Which code in calc.sh correctly uses the function to add 5 and 7?
Bash Scripting
mathlib.sh:
add() {
  echo $(($1 + $2))
}

calc.sh:
#!/bin/bash
# Fill in the missing line here
add 5 7
Arun mathlib.sh
Bimport mathlib.sh
C. mathlib.sh &
Dsource ./mathlib.sh
Attempts:
2 left
💡 Hint
Use the command that loads functions into the current shell.
🧠 Conceptual
expert
3:00remaining
What happens to variables when sourcing a script in bash?
If you source a script vars.sh that sets MYVAR="Hello", what is the value of MYVAR in your current shell after sourcing?
Bash Scripting
vars.sh:
MYVAR="Hello"

main.sh:
#!/bin/bash
source ./vars.sh
echo "$MYVAR"
AEmpty string
BHello
CMYVAR
DError: MYVAR not defined
Attempts:
2 left
💡 Hint
Sourcing runs the script in the current shell environment.

Practice

(1/5)
1. What is the main purpose of using function libraries in bash scripting?
easy
A. To reuse functions across multiple scripts without rewriting code
B. To make scripts run faster by compiling them
C. To encrypt scripts for security
D. To automatically update scripts from the internet

Solution

  1. Step 1: Understand function libraries

    Function libraries contain reusable functions that can be shared across scripts.
  2. Step 2: Identify the benefit

    Reusing functions avoids rewriting code and keeps scripts clean and maintainable.
  3. Final Answer:

    To reuse functions across multiple scripts without rewriting code -> Option A
  4. Quick Check:

    Function reuse = To reuse functions across multiple scripts without rewriting code [OK]
Hint: Function libraries let you reuse code easily [OK]
Common Mistakes:
  • Thinking libraries speed up script execution
  • Confusing libraries with encryption tools
  • Assuming libraries auto-update scripts
2. Which of the following is the correct syntax to source a script named lib.sh in bash?
easy
A. load lib.sh
B. import lib.sh
C. source lib.sh
D. include lib.sh

Solution

  1. Step 1: Recall bash sourcing commands

    Bash uses source or . to load another script.
  2. Step 2: Identify correct syntax

    source lib.sh correctly loads the script named lib.sh.
  3. Final Answer:

    source lib.sh -> Option C
  4. Quick Check:

    source command = source lib.sh [OK]
Hint: Use 'source' or '.' to load scripts in bash [OK]
Common Mistakes:
  • Using 'import' which is not a bash command
  • Using 'include' or 'load' which are invalid in bash
  • Forgetting to specify the script name
3. Given two files:
lib.sh:
function greet() {
  echo "Hello, $1!"
}

main.sh:
source ./lib.sh
greet "Alice"

What will be the output when running bash main.sh?
medium
A. greet: command not found
B. No output
C. Hello, $1!
D. Hello, Alice!

Solution

  1. Step 1: Understand sourcing effect

    The source ./lib.sh command loads the greet function into main.sh.
  2. Step 2: Analyze function call

    Calling greet "Alice" runs the function, echoing "Hello, Alice!".
  3. Final Answer:

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

    Function loaded and called = Hello, Alice! [OK]
Hint: Sourcing loads functions so they can be called directly [OK]
Common Mistakes:
  • Not sourcing the library before calling the function
  • Expecting variable $1 to be literal
  • Confusing function definition with execution
4. Consider this script snippet:
source lib.sh
greet "Bob"

But running it gives: main.sh: line 2: greet: command not found
What is the most likely cause?
medium
A. lib.sh does not define the greet function
B. The source command is misspelled
C. The greet function is called before sourcing lib.sh
D. lib.sh has wrong file permissions

Solution

  1. Step 1: Check function definition in lib.sh

    If greet is not defined in lib.sh, sourcing won't load it.
  2. Step 2: Analyze error message

    "command not found" means the function is missing, not a syntax or permission error.
  3. Final Answer:

    lib.sh does not define the greet function -> Option A
  4. Quick Check:

    Missing function definition = lib.sh does not define the greet function [OK]
Hint: Check if function exists in sourced file first [OK]
Common Mistakes:
  • Assuming source command typo without checking
  • Ignoring function order in script
  • Not verifying file permissions
5. You want to create a reusable library utils.sh with a function timestamp that prints the current date and time. How should you write and use it in your script run.sh to print the timestamp?
hard
A. In utils.sh: timestamp() { date; } and in run.sh: ./utils.sh; timestamp
B. In utils.sh: timestamp() { echo $(date); } and in run.sh: source utils.sh; timestamp
C. In utils.sh: function timestamp { echo date; } and in run.sh: ./utils.sh; timestamp
D. In utils.sh: timestamp() { date; } and in run.sh: bash utils.sh; timestamp

Solution

  1. Step 1: Define timestamp function correctly

    Use timestamp() { echo $(date); } to print current date and time.
  2. Step 2: Source utils.sh in run.sh and call function

    Use source utils.sh to load the function, then call timestamp.
  3. Final Answer:

    In utils.sh: timestamp() { echo $(date); } and in run.sh: source utils.sh; timestamp -> Option B
  4. Quick Check:

    Correct function and sourcing = In utils.sh: timestamp() { echo $(date); } and in run.sh: source utils.sh; timestamp [OK]
Hint: Use echo $(date) inside function and source before calling [OK]
Common Mistakes:
  • Running utils.sh instead of sourcing it
  • Using echo date instead of echo $(date)
  • Calling function without sourcing library
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