Bird
Raised Fist0
Bash Scriptingscripting~20 mins

Array slicing in Bash Scripting - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Array Slicing Master
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 array slicing?
Given the array arr=(a b c d e f g), what is the output of echo ${arr[@]:2:3}?
Bash Scripting
arr=(a b c d e f g)
echo ${arr[@]:2:3}
Ad e f
Bb c d
Ca b c
Dc d e
Attempts:
2 left
💡 Hint
Remember that array slicing starts at index 0 and the syntax is ${array[@]:start:length}.
💻 Command Output
intermediate
2:00remaining
What does this negative index slice output?
With arr=(1 2 3 4 5 6 7 8 9), what is the output of echo ${arr[@]: -4:2}?
Bash Scripting
arr=(1 2 3 4 5 6 7 8 9)
echo ${arr[@]: -4:2}
A8 9
B6 7
C7 8
D5 6
Attempts:
2 left
💡 Hint
Negative start index counts from the end of the array.
📝 Syntax
advanced
2:00remaining
Which option correctly slices the last 3 elements of an array?
Given arr=(x y z a b c d), which command outputs the last 3 elements?
Bash Scripting
arr=(x y z a b c d)
Aecho ${arr[@]: -3:3}
Becho ${arr[@]:3:3}
Cecho ${arr[@]: -3}
Decho ${arr[@]: -4:3}
Attempts:
2 left
💡 Hint
Use negative start index and specify length to get exact elements.
🔧 Debug
advanced
2:00remaining
Why does this slicing command fail?
Given arr=(10 20 30 40 50), why does echo ${arr[@]:-3:2} produce unexpected output?
Bash Scripting
arr=(10 20 30 40 50)
echo ${arr[@]:-3:2}
ABecause the syntax ${arr[@]:-3:2} is interpreted as a default value, not slicing
BBecause negative indices must have a space after the colon to be recognized
CBecause there is no space after the colon before the negative index
DBecause the array is too short for this slice
Attempts:
2 left
💡 Hint
Check how Bash interprets the colon and minus sign in parameter expansion.
🚀 Application
expert
3:00remaining
How many elements are in the slice?
Given arr=(alpha beta gamma delta epsilon zeta eta), what is the number of elements output by echo ${arr[@]:4:10}?
Bash Scripting
arr=(alpha beta gamma delta epsilon zeta eta)
echo ${arr[@]:4:10}
A4
B7
C3
D10
Attempts:
2 left
💡 Hint
The slice length can be longer than the remaining elements, but output only includes available elements.

Practice

(1/5)
1. In Bash scripting, what does array slicing do when you use ${array[@]:start:length}?
easy
A. Sorts the array elements alphabetically
B. Deletes elements from the array starting at start index
C. Extracts a part of the array starting at start index with length elements
D. Reverses the array elements from start to length

Solution

  1. Step 1: Understand array slicing syntax

    In Bash, ${array[@]:start:length} extracts elements from the array starting at index start and takes length elements.
  2. Step 2: Compare options with this behavior

    Only Extracts a part of the array starting at start index with length elements correctly describes this extraction. Other options describe unrelated operations.
  3. Final Answer:

    Extracts a part of the array starting at start index with length elements -> Option C
  4. Quick Check:

    Array slicing = Extract part [OK]
Hint: Remember slicing picks elements, not deletes or sorts [OK]
Common Mistakes:
  • Confusing slicing with deleting elements
  • Thinking slicing sorts or reverses the array
  • Mixing up start index and length meaning
2. Which of the following is the correct syntax to slice 3 elements from index 2 in a Bash array named arr?
easy
A. ${arr[2:3]}
B. ${arr[@]:2:3}
C. ${arr:2:3}
D. ${arr[2..4]}

Solution

  1. Step 1: Recall correct array slicing syntax

    In Bash, to slice an array, use ${array[@]:start:length}. The @ is needed to refer to all elements.
  2. Step 2: Check each option

    ${arr[@]:2:3} matches the correct syntax: ${arr[@]:2:3}. ${arr:2:3} misses @, which is required for arrays. Options B and D use invalid syntax.
  3. Final Answer:

    ${arr[@]:2:3} -> Option B
  4. Quick Check:

    Use ${array[@]:start:length} for slicing [OK]
Hint: Use @ inside braces for array slicing syntax [OK]
Common Mistakes:
  • Omitting @ when slicing arrays
  • Using square brackets with colon syntax
  • Trying to slice with invalid range notation
3. Given the Bash array arr=(a b c d e), what is the output of echo ${arr[@]:1:3}?
medium
A. a b c
B. c d e
C. b c d e
D. b c d

Solution

  1. Step 1: Identify the array and slice parameters

    The array is (a b c d e). The slice starts at index 1 and takes 3 elements.
  2. Step 2: Extract elements from index 1 to 3

    Index 0 = a, 1 = b, 2 = c, 3 = d, 4 = e. Taking 3 elements from index 1 gives: b, c, d.
  3. Final Answer:

    b c d -> Option D
  4. Quick Check:

    Slice from 1 length 3 = b c d [OK]
Hint: Count from zero, pick length elements starting at start [OK]
Common Mistakes:
  • Starting count at 1 instead of 0
  • Taking wrong number of elements
  • Confusing output with full array
4. What is wrong with this Bash code snippet for slicing an array?
arr=(x y z)
echo ${arr:1:2}
medium
A. It will output an empty string
B. It will output only one element instead of two
C. It will cause a syntax error because slicing is not allowed
D. It will output 'y z' correctly

Solution

  1. Step 1: Check slicing syntax correctness

    The code uses ${arr:1:2} without @. For arrays, @ is needed to slice multiple elements.
  2. Step 2: Understand the effect of missing @

    Without @, Bash uses the first element x as a scalar string and slices it from index 1 length 2. Since x has length 1, it outputs an empty string.
  3. Final Answer:

    It will output an empty string -> Option A
  4. Quick Check:

    Missing @ slices first elem as string -> empty [OK]
Hint: Always use @ for array slicing, else string slicing happens [OK]
Common Mistakes:
  • Omitting @ and expecting array slice
  • Assuming no error but wrong output
  • Confusing string and array slicing syntax
5. You have a Bash array arr=(1 2 3 4 5). You want to extract the last 3 elements using array slicing. Which command will do this correctly?
hard
A. echo ${arr[@]:-3}
B. echo ${arr[@]: -3:3}
C. echo ${arr[@]:3:3}
D. echo ${arr[@]:3}

Solution

  1. Step 1: Understand negative index slicing in Bash

    Using a negative start index slices from the end. ${arr[@]:-3} extracts from 3rd from end to the end (last 3 elements).
  2. Step 2: Check each option

    ${arr[@]: -3:3} has space after : causing bad substitution. ${arr[@]:3:3} slices from index 3 length 3 but only 2 elements remain (4 5). ${arr[@]:3} slices from 3 to end (4 5). Only ${arr[@]:-3} gets exactly the last 3: 3 4 5.
  3. Final Answer:

    echo ${arr[@]:-3} -> Option A
  4. Quick Check:

    Negative start index slices from end [OK]
Hint: Use negative start index without length to get last elements [OK]
Common Mistakes:
  • Adding space after ':' before negative offset
  • Using slice length larger than remaining elements
  • Not knowing negative indices slice from array end
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