📖 Scenario: You are managing a small store's inventory. You want to keep track of product prices using a simple script.
🎯 Goal: Create a Bash script that uses an associative array to store product names and their prices, then display the price of each product.
📋 What You'll Learn
Use an associative array declared with declare -A
Store exact product-price pairs as given
Use a for loop to iterate over the associative array
Print each product and its price in the format: Product: Price
💡 Why This Matters
🌍 Real World
Associative arrays help store and manage key-value pairs like product prices, user settings, or configuration options in scripts.
💼 Career
Knowing associative arrays is useful for automating tasks, managing data in scripts, and writing efficient shell scripts in system administration or DevOps roles.
Progress0 / 4 steps
1
Create an associative array with products and prices
Create an associative array called products using declare -A. Add these exact entries: apple=100, banana=40, orange=70.
Bash Scripting
Hint
Use declare -A products to create the associative array. Then assign the key-value pairs inside parentheses.
2
Add a variable to count the number of products
Create a variable called count that stores the number of products in the products associative array.
Bash Scripting
Hint
Use ${#products[@]} to get the number of keys in the associative array.
3
Loop through the associative array to print products and prices
Use a for loop with the variable product to iterate over the keys of products. Inside the loop, get the price using ${products[$product]}.
Bash Scripting
Hint
Use "${!products[@]}" to get all keys. Then access each value with ${products[$product]}.
4
Print each product and its price
Inside the for loop, print the product and price in the format: Product: Price. Use echo with the variables product and price.
Bash Scripting
Hint
Use echo "$product: $price" to print each pair.
Practice
(1/5)
1. What is the main purpose of using declare -A in a Bash script?
easy
A. To define a function
B. To declare a regular indexed array
C. To create an associative array with named keys
D. To start a loop
Solution
Step 1: Understand the role of declare -A
This command is used in Bash to declare an associative array, which means the array uses named keys instead of numbers.
Step 2: Differentiate from other declarations
Regular arrays use numbers as keys and are declared without -A. Functions and loops are declared differently.
Final Answer:
To create an associative array with named keys -> Option C
Quick Check:
declare -A means associative array [OK]
Hint: Remember: -A means associative array with named keys [OK]
Common Mistakes:
Confusing associative arrays with regular indexed arrays
Thinking declare -A creates a function
Assuming declare -A starts a loop
2. Which of the following is the correct syntax to declare an associative array named colors in Bash?
easy
A. declare colors=(red green blue)
B. declare -A colors
C. array colors=(red green blue)
D. declare -a colors
Solution
Step 1: Identify the correct declaration for associative arrays
In Bash, declare -A is used to declare associative arrays, so declare -A colors is correct.
Step 2: Understand other options
declare -a is for indexed arrays, and the other options are invalid syntax for associative arrays.
Final Answer:
declare -A colors -> Option B
Quick Check:
Associative array declaration uses declare -A [OK]
Hint: Use declare -A to declare associative arrays [OK]
Common Mistakes:
Using declare -a which is for indexed arrays
Trying to assign values during declaration incorrectly
Using invalid syntax like array keyword
3. What will be the output of the following Bash script?
declare -A fruits
fruits[apple]=red
fruits[banana]=yellow
for key in "${!fruits[@]}"; do
echo "$key is ${fruits[$key]}"
done
medium
A. apple banana\nred yellow
B. red is apple\nyellow is banana
C. Syntax error
D. apple is red\nbanana is yellow
Solution
Step 1: Understand the associative array and loop
The array fruits has keys 'apple' and 'banana' with values 'red' and 'yellow'. The loop iterates over keys and prints key and value pairs.
Step 2: Predict the output format
Each line prints "key is value", so output lines are "apple is red" and "banana is yellow" (order may vary but both lines appear).
Final Answer:
apple is red\nbanana is yellow -> Option D
Quick Check:
Loop prints key and value pairs correctly [OK]
Hint: Loop keys with ${!array[@]} to access associative array keys [OK]
Common Mistakes:
Printing values as keys or vice versa
Expecting syntax error due to quotes
Confusing indexed arrays with associative arrays
4. Identify the error in the following Bash script that uses an associative array:
declare -A animals
animals=([dog]=bark [cat]=meow)
echo ${animals[dog]}
medium
A. No error, script runs correctly
B. Associative array cannot be assigned values this way
C. Missing quotes around keys in assignment
D. Incorrect syntax for echo command
Solution
Step 1: Check associative array assignment syntax
Assigning values with animals=([dog]=bark [cat]=meow) is valid syntax for associative arrays in Bash.
Step 2: Verify echo command usage
echo ${animals[dog]} correctly prints the value for key 'dog'. No syntax errors present.
Final Answer:
No error, script runs correctly -> Option A
Quick Check:
Associative array assignment and access are correct [OK]
Hint: Assign associative arrays with ([key]=value ...) syntax [OK]
Common Mistakes:
Thinking quotes are mandatory around keys in assignment
Assuming echo syntax is wrong without quotes
Confusing indexed array assignment with associative arrays
5. You want to create an associative array user_ages that stores names as keys and ages as values. Which script correctly adds entries and prints all names with their ages?
hard
A. declare -A user_ages
user_ages=( [Alice]=30 [Bob]=25 )
for name in "${!user_ages[@]}"; do
echo "$name is ${user_ages[$name]} years old"
done
B. declare user_ages
user_ages=( Alice=30 Bob=25 )
for name in "${user_ages[@]}"; do
echo "$name is ${user_ages[$name]} years old"
done
C. declare -A user_ages
user_ages=( Alice:30 Bob:25 )
for name in "${!user_ages[@]}"; do
echo "$name is ${user_ages[$name]} years old"
done
D. declare -a user_ages
user_ages=( [Alice]=30 [Bob]=25 )
for name in "${!user_ages[@]}"; do
echo "$name is ${user_ages[$name]} years old"
done
Solution
Step 1: Check declaration and assignment
declare -A user_ages
user_ages=( [Alice]=30 [Bob]=25 )
for name in "${!user_ages[@]}"; do
echo "$name is ${user_ages[$name]} years old"
done correctly declares an associative array with declare -A and assigns keys and values using ( [key]=value ) syntax.
Step 2: Verify loop and output
The loop uses ${!user_ages[@]} to get keys and prints each name with its age correctly.
Final Answer:
Option A script correctly adds and prints associative array entries -> Option A
Quick Check:
Use declare -A and [key]=value syntax for associative arrays [OK]
Hint: Use declare -A and [key]=value syntax for associative arrays [OK]
Common Mistakes:
Using declare -a which is for indexed arrays
Incorrect key-value syntax like colons or missing brackets
Looping over values instead of keys
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.