Using Local Variables with the local Keyword in Bash
📖 Scenario: You are writing a bash script to calculate the total price of items in a shopping list. You want to keep your calculations clean and avoid changing variables outside your function.
🎯 Goal: Build a bash script that uses a function with a local variable to calculate the total price of items without affecting variables outside the function.
📋 What You'll Learn
Create a bash array called prices with the values 10, 20, and 30
Create a function called calculate_total that uses a local variable total
Use a for loop inside the function to sum the prices
Call the function and print the total price outside the function
💡 Why This Matters
🌍 Real World
Using local variables in bash functions helps keep scripts clean and avoids accidental changes to important data outside functions.
💼 Career
Many automation and DevOps tasks use bash scripts where local variables prevent bugs and make code easier to maintain.
Progress0 / 4 steps
1
Create the prices array
Create a bash array called prices with the values 10, 20, and 30.
Bash Scripting
Hint
Use parentheses to create a bash array: prices=(10 20 30).
2
Create the calculate_total function with a local variable
Create a function called calculate_total that declares a local variable named total and sets it to 0.
Bash Scripting
Hint
Define the function with calculate_total() { ... } and inside it write local total=0.
3
Sum the prices inside the function using a for loop
Inside the calculate_total function, use a for loop with variable price to iterate over ${prices[@]} and add each price to the local total variable.
Bash Scripting
Hint
Use for price in "${prices[@]}"; do ... done and update total inside the loop.
4
Call the function and print the total
Call the calculate_total function, then print the value of total outside the function using echo. Note: Since total is local, declare a global total variable before calling the function and update it inside the function by returning the value.
Bash Scripting
Hint
Use echo "$total" inside the function to output the sum, then capture it with total=$(calculate_total) and print it with echo "$total".
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
Step 1: Understand variable scope in Bash functions
Variables declared with local exist only inside the function where they are declared.
Step 2: Compare with other variable types
Global variables exist outside functions; local prevents changes outside the function.
Final Answer:
It creates a variable that exists only inside the function. -> Option D
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
Step 1: Recall correct syntax for local variables
The correct syntax is local variable_name=value.
Step 2: Check each option
Only local count=10 matches the correct syntax.
Final Answer:
local count=10 -> Option C
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
Step 1: Analyze local variable inside function
Inside test_func, value is local and set to 10, so echo $value prints 10.
Step 2: Check global variable outside function
Outside the function, value remains 5 because local variable does not affect it.
Final Answer:
10
5 -> Option A
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
Step 1: Check variable naming rules
Using local as a variable name conflicts with the reserved keyword local.
Step 2: Understand syntax error cause
Assigning local=5 tries to overwrite the keyword, causing a syntax error.
Final Answer:
Using 'local' as a variable name causes a syntax error. -> Option A
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
Step 1: Understand local variable purpose
Declaring local counter inside the function creates a separate variable that does not affect the global one.
Step 2: Check other options
Incrementing global directly changes global variable; export shares variables with child processes; declaring local outside function is invalid.
Final Answer:
Declare local counter inside the function and increment it there. -> Option B
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 unknownstrongwhile earning +1 Grip toward your certificate.