Bird
Raised Fist0
Bash Scriptingscripting~10 mins

Array slicing in Bash Scripting - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Array slicing
Define array
↓
Specify slice start and length
↓
Extract slice
↓
Use or display slice
↓
End
Start with an array, choose where to slice and how many elements, then extract and use that slice.
Execution Sample
Bash Scripting
arr=(apple banana cherry date elderberry)
start=1
length=3
slice=(${arr[@]:start:length})
echo "${slice[@]}"
Extracts 3 elements from index 1 of the array and prints them.
Execution Table
StepActionArray StateSlice IndicesSlice ResultOutput
1Define array[apple, banana, cherry, date, elderberry]---
2Set slice start=1, length=3-start=1, length=3--
3Extract slice-start=1, length=3[banana, cherry, date]-
4Print slice--[banana, cherry, date]banana cherry date
5End----
💡 Slice extracted and printed; script ends.
Variable Tracker
VariableStartAfter Step 2After Step 3Final
arr[apple, banana, cherry, date, elderberry][apple, banana, cherry, date, elderberry][apple, banana, cherry, date, elderberry][apple, banana, cherry, date, elderberry]
sliceundefinedundefined[banana, cherry, date][banana, cherry, date]
startundefined111
lengthundefined333
Key Moments - 3 Insights
Why does the slice start at index 1, not 0?
In the execution_table row 2, start=1 means slicing begins from the second element because bash arrays are zero-indexed.
What happens if the slice length is longer than remaining elements?
If length exceeds available elements, bash returns all elements from start to end without error, as shown in row 3 if length was larger.
Why do we use parentheses around the slice extraction?
Parentheses create a new array from the slice, ensuring slice is an array variable, as shown in row 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 3, what elements are in the slice?
A[date, elderberry]
B[banana, cherry, date]
C[apple, banana, cherry]
D[apple, elderberry]
💡 Hint
Check the 'Slice Result' column at step 3 in the execution_table.
At which step is the slice printed to output?
AStep 4
BStep 3
CStep 2
DStep 5
💡 Hint
Look for the 'Print slice' action and its output in the execution_table.
If we change start to 2 and length to 2, what will the slice contain?
A[banana, cherry]
B[date, elderberry]
C[cherry, date]
D[apple, banana]
💡 Hint
Refer to variable_tracker for start and length values and how slicing works.
Concept Snapshot
Array slicing in bash:
arr=(a b c d e)
slice=(${arr[@]:start:length})
start = index to begin (0-based)
length = number of elements to extract
slice is a new array with selected elements
Full Transcript
This visual trace shows how to slice arrays in bash scripting. First, an array is defined with elements. Then, we choose a start index and length for the slice. Using the syntax ${arr[@]:start:length}, we extract a portion of the array. Parentheses around this expression create a new array variable holding the slice. Finally, we print the slice elements. The trace follows each step, showing variable values and outputs, helping beginners see how array slicing works in bash.

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