📖 Scenario: You are managing a list of tasks in a simple bash script. You want to add new tasks and remove completed ones from your list.
🎯 Goal: Build a bash script that creates an initial array of tasks, adds a new task, removes a specific task, and then prints the final list of tasks.
📋 What You'll Learn
Create a bash array called tasks with three exact tasks
Add a new task to the tasks array
Remove a specific task from the tasks array
Print the final list of tasks, one per line
💡 Why This Matters
🌍 Real World
Managing lists of items like tasks, filenames, or user inputs in bash scripts is common for automation and system administration.
💼 Career
Knowing how to manipulate arrays in bash helps automate repetitive tasks and manage data efficiently in many IT and DevOps roles.
Progress0 / 4 steps
1
Create the initial tasks array
Create a bash array called tasks with these exact tasks: "Buy groceries", "Clean house", and "Pay bills".
Bash Scripting
Hint
Use parentheses () to create an array and double quotes "" around each task.
2
Add a new task to the array
Add a new task "Call mom" to the tasks array using the correct bash syntax.
Bash Scripting
Hint
Use tasks+=("Call mom") to add an element to the array.
3
Remove a task from the array
Remove the task "Clean house" from the tasks array by creating a new array called filtered_tasks that excludes it.
Bash Scripting
Hint
Use a for loop to check each task and add only those not equal to "Clean house" to filtered_tasks.
4
Print the final list of tasks
Print each task in the filtered_tasks array on its own line using a for loop and echo.
Bash Scripting
Hint
Use for task in "${filtered_tasks[@]}" and echo "$task" to print each task.
Practice
(1/5)
1. Which command correctly adds the element "apple" to the end of a Bash array named fruits?
easy
A. fruits+=("apple")
B. fruits[0]+="apple"
C. fruits.append("apple")
D. fruits.add("apple")
Solution
Step 1: Understand Bash array addition syntax
In Bash, to add an element to an array, use the syntax array+=("element").
Step 2: Check each option
fruits+=("apple") uses the correct syntax. Options A, B, and C are invalid Bash syntax for arrays.
Final Answer:
fruits+=("apple") -> Option A
Quick Check:
Add element to array = fruits+=("apple") [OK]
Hint: Use += with parentheses to add elements to arrays [OK]
Common Mistakes:
Using string concatenation instead of array syntax
Using methods like append() which are not Bash
Forgetting parentheses around the element
2. Which of the following is the correct syntax to remove the element at index 2 from a Bash array named colors?
easy
A. unset colors[2]
B. remove colors[2]
C. delete colors[2]
D. colors-=2
Solution
Step 1: Recall how to remove array elements in Bash
Bash uses the unset command with the array element's index to remove it.
Step 2: Verify each option
unset colors[2] uses unset colors[2], which is correct. Options A, C, and D are not valid Bash commands for removing array elements.
Final Answer:
unset colors[2] -> Option A
Quick Check:
Remove element by index = unset colors[2] [OK]
Hint: Use unset with array[index] to remove elements [OK]
Common Mistakes:
Using non-existent commands like remove or delete
Trying to subtract elements with -= which is invalid
Forgetting to specify the index inside brackets
3. What is the output of this Bash script?
items=("pen" "pencil" "eraser")
items+=("marker")
unset 'items[1]'
for item in "${items[@]}"; do
echo "$item"
done
medium
A. pen
marker
B. pen
pencil
eraser
marker
C. pen
eraser
marker
D. pen
pencil
marker
Solution
Step 1: Analyze array modifications
Initial array: ["pen", "pencil", "eraser"]. Then add "marker" at the end: ["pen", "pencil", "eraser", "marker"]. Then remove element at index 1 ("pencil").
Step 2: Determine final array elements
After removal, array elements are: index 0="pen", index 2="eraser", index 3="marker". Looping over ${items[@]} skips unset indices, so output is "pen", "eraser", "marker" each on a new line.
Final Answer:
pen
eraser
marker -> Option C
Quick Check:
Remove index 1 and add marker = pen, eraser, marker [OK]
Hint: Unset removes element but keeps others; loop skips unset [OK]
Common Mistakes:
Assuming unset shifts elements left
Expecting pencil to still print
Not realizing loop skips unset indices
4. Identify the error in this Bash script that tries to remove the first element from array nums:
nums=(1 2 3 4)
unset nums(0)
echo "${nums[@]}"
medium
A. Array elements must be strings, not numbers
B. Missing quotes around array name in unset
C. Cannot unset elements in Bash arrays
D. Using parentheses instead of brackets in unset
Solution
Step 1: Check unset syntax for array elements
To remove an element, use unset 'array[index]' with square brackets, not parentheses.
Step 2: Identify the error in the script
The script uses unset nums(0), which is invalid syntax. It should be unset 'nums[0]'.
Final Answer:
Using parentheses instead of brackets in unset -> Option D
Quick Check:
Unset uses brackets, not parentheses [OK]
Hint: Use square brackets [] for array indices in unset [OK]
Common Mistakes:
Using parentheses () instead of brackets []
Forgetting to quote the unset argument
Thinking unset can't remove array elements
5. You have a Bash array tasks=("clean" "cook" "shop" "study"). You want to remove the task "cook" and add "exercise" at the end. Which script snippet correctly does this?
hard
A. tasks.remove("cook")
tasks.append("exercise")
B. unset 'tasks[1]'
tasks+=("exercise")
C. tasks=("clean" "shop" "exercise" "study")
D. unset tasks[2]
tasks+="exercise"
Solution
Step 1: Remove element "cook" at index 1
Use unset 'tasks[1]' to remove the second element safely.
Step 2: Add "exercise" to the end of the array
Use tasks+=("exercise") to append the new task.
Final Answer:
unset 'tasks[1]'
tasks+=("exercise") -> Option B
Quick Check:
Remove by unset and add with += [OK]
Hint: Unset by index, add with += and parentheses [OK]
Common Mistakes:
Reassigning whole array losing other elements
Using non-Bash methods like remove() or append()
Concatenating string instead of array element
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.