Bird
Raised Fist0
Bash Scriptingscripting~20 mins

Local variables (local keyword) in Bash Scripting - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Local Variable Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the output of this Bash script using local variables?
Consider the following Bash script. What will it print when run?
Bash Scripting
my_func() {
  local var="inside"
  echo "$var"
}
var="outside"
my_func
echo "$var"
Ainside\noutside
Binside\ninside
Coutside\noutside
Doutside\ninside
Attempts:
2 left
💡 Hint
Think about how the local keyword limits the variable scope inside the function.
💻 Command Output
intermediate
2:00remaining
What error or output does this script produce?
What happens when you run this Bash script?
Bash Scripting
func() {
  local x=5
  ((x++))
  echo $x
}
func
echo $x
A6\n\n
B6\n
C6\n5
DSyntax error
Attempts:
2 left
💡 Hint
Remember local variables do not affect global variables.
📝 Syntax
advanced
1:30remaining
Which option correctly declares a local variable with initial value in Bash?
Choose the correct syntax to declare a local variable named 'count' with value 10 inside a function.
Alocal count 10
Blocal count=10
Clocal count := 10
Dlocal count == 10
Attempts:
2 left
💡 Hint
Bash uses = to assign values, no spaces around =.
🔧 Debug
advanced
2:00remaining
Why does this script print 'local' twice instead of 'local' and 'global'?
Examine the script below and find why the output is not as expected.
Bash Scripting
var="global"
func() {
  var="local"
  echo "$var"
}
func
echo "$var"
ABecause the function is not called properly.
BBecause 'var' is always global in Bash, local keyword is ignored.
CBecause 'var' inside func is not declared local, it overwrites the global variable.
DBecause echo cannot print local variables.
Attempts:
2 left
💡 Hint
Think about variable scope and the effect of missing 'local'.
🚀 Application
expert
2:30remaining
How many variables are accessible outside after running this script?
Given the script below, how many variables named 'a', 'b', and 'c' exist and are accessible outside the function?
Bash Scripting
a=1
func() {
  local a=2
  b=3
  local c=4
}
func
echo "$a $b $c"
ANo variables accessible globally
B3 variables: 'a', 'b', and 'c' all accessible globally
C1 variable: only 'a' accessible globally
D2 variables: 'a' and 'b' accessible; 'c' is local and not accessible
Attempts:
2 left
💡 Hint
Local variables exist only inside functions; others affect global scope.

Practice

(1/5)
1. What does the local keyword do in a Bash function?
easy
A. It deletes the variable after the function ends.
B. It makes the variable global and accessible everywhere.
C. It exports the variable to child processes.
D. It creates a variable that exists only inside the function.

Solution

  1. Step 1: Understand variable scope in Bash functions

    Variables declared with local exist only inside the function where they are declared.
  2. Step 2: Compare with other variable types

    Global variables exist outside functions; local prevents changes outside the function.
  3. Final Answer:

    It creates a variable that exists only inside the function. -> Option D
  4. Quick Check:

    Local variables = function-only scope [OK]
Hint: Local means variable stays inside the function only [OK]
Common Mistakes:
  • Thinking local variables are global
  • Confusing local with export
  • Assuming local deletes variables
2. Which of the following is the correct way to declare a local variable named count inside a Bash function?
easy
A. count local=10
B. var local count=10
C. local count=10
D. declare count local=10

Solution

  1. Step 1: Recall correct syntax for local variables

    The correct syntax is local variable_name=value.
  2. Step 2: Check each option

    Only local count=10 matches the correct syntax.
  3. Final Answer:

    local count=10 -> Option C
  4. Quick Check:

    local + variable = correct syntax [OK]
Hint: Use 'local var=value' inside functions [OK]
Common Mistakes:
  • Placing 'local' after variable name
  • Using 'var' keyword which doesn't exist
  • Mixing 'declare' with 'local' incorrectly
3. What will be the output of this script?
#!/bin/bash
value=5
function test_func() {
  local value=10
  echo $value
}
test_func
echo $value
medium
A. 10 5
B. 5 10
C. 10 10
D. 5 5

Solution

  1. Step 1: Analyze local variable inside function

    Inside test_func, value is local and set to 10, so echo $value prints 10.
  2. Step 2: Check global variable outside function

    Outside the function, value remains 5 because local variable does not affect it.
  3. Final Answer:

    10 5 -> Option A
  4. Quick Check:

    Local inside function, global outside = 10 then 5 [OK]
Hint: Local variable hides global only inside function [OK]
Common Mistakes:
  • Assuming local changes global variable
  • Expecting both outputs to be same
  • Confusing order of printed values
4. Identify the error in this Bash function:
function example() {
  local=5
  echo $local
}
medium
A. Using 'local' as a variable name causes a syntax error.
B. Missing 'local' keyword before variable name.
C. Function missing parentheses after name.
D. No error; script runs fine.

Solution

  1. Step 1: Check variable naming rules

    Using local as a variable name conflicts with the reserved keyword local.
  2. Step 2: Understand syntax error cause

    Assigning local=5 tries to overwrite the keyword, causing a syntax error.
  3. Final Answer:

    Using 'local' as a variable name causes a syntax error. -> Option A
  4. Quick Check:

    Reserved keywords can't be variable names [OK]
Hint: Don't name variables 'local'--it's a reserved keyword [OK]
Common Mistakes:
  • Thinking 'local' can be a variable name
  • Ignoring syntax errors from reserved words
  • Missing parentheses is not the error here
5. You want to write a Bash function that increments a counter variable without affecting the global variable of the same name. Which approach correctly uses local to achieve this?
hard
A. Increment the global variable directly without declaring local.
B. Declare local counter inside the function and increment it there.
C. Use export counter inside the function before incrementing.
D. Declare counter outside the function and use local globally.

Solution

  1. Step 1: Understand local variable purpose

    Declaring local counter inside the function creates a separate variable that does not affect the global one.
  2. Step 2: Check other options

    Incrementing global directly changes global variable; export shares variables with child processes; declaring local outside function is invalid.
  3. Final Answer:

    Declare local counter inside the function and increment it there. -> Option B
  4. Quick Check:

    Local inside function isolates variable changes [OK]
Hint: Use 'local' inside function to isolate variable changes [OK]
Common Mistakes:
  • Modifying global variable unintentionally
  • Misusing export for local scope
  • Declaring local variables outside functions
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