Bird
Raised Fist0
Bash Scriptingscripting~20 mins

Substring extraction (${var:offset:length}) in Bash Scripting - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Substring Extraction 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 substring extraction?
Given the variable assignment text="automation", what is the output of echo ${text:4:3}?
Bash Scripting
text="automation"
echo ${text:4:3}
Amat
Buto
Ctom
Doma
Attempts:
2 left
💡 Hint
Remember that offset starts at 0 and length is how many characters to extract.
💻 Command Output
intermediate
2:00remaining
What happens if length exceeds string length?
Given word="script", what is the output of echo ${word:3:10}?
Bash Scripting
word="script"
echo ${word:3:10}
Apt
Bipt
Cip
DError: length too long
Attempts:
2 left
💡 Hint
If length goes beyond the string end, bash extracts until the end.
📝 Syntax
advanced
2:00remaining
Which option correctly extracts substring with negative offset?
Given data="automation", which command outputs the last 4 characters using substring extraction?
Bash Scripting
data="automation"
Aecho ${data:-4:4}
Becho ${data: -4:4}
Cecho ${data: -4}
Decho ${data: -4:-1}
Attempts:
2 left
💡 Hint
Negative offset counts from the end; length can be omitted to go to string end.
🔧 Debug
advanced
2:00remaining
Why does this substring extraction fail?
Given str="automation", why does echo ${str:3,4} produce an error?
Bash Scripting
str="automation"
echo ${str:3,4}
AComma is invalid syntax; should use colon between offset and length
BOffset 3 is out of range for this string
CLength 4 is too large and causes error
DVariable name must be uppercase
Attempts:
2 left
💡 Hint
Check the syntax for substring extraction carefully.
🚀 Application
expert
3:00remaining
Extract middle word from a string using substring extraction
Given sentence="learn bash scripting easily", which command extracts the word 'bash' using substring extraction only (no external commands)?
Bash Scripting
sentence="learn bash scripting easily"
Aecho ${sentence:6:4}
Becho ${sentence:6:5}
Cecho ${sentence:6:3}
Decho ${sentence:7:4}
Attempts:
2 left
💡 Hint
Count characters including spaces to find offset and length of 'bash'.

Practice

(1/5)
1. What does the expression ${var:2:3} do in bash scripting?
easy
A. Extracts 3 characters from var starting at index 2
B. Extracts 2 characters from var starting at index 3
C. Extracts 3 characters from var starting at index 0
D. Extracts the entire string var ignoring offset and length

Solution

  1. Step 1: Understand substring syntax

    The syntax ${var:offset:length} extracts a substring from var starting at offset with length characters.
  2. Step 2: Apply to given expression

    Here, offset is 2 and length is 3, so it extracts 3 characters starting from index 2 (0-based).
  3. Final Answer:

    Extracts 3 characters from var starting at index 2 -> Option A
  4. Quick Check:

    Substring = characters from index 2, length 3 [OK]
Hint: Offset is start index, length is number of chars [OK]
Common Mistakes:
  • Confusing offset with length
  • Forgetting offset starts at 0
  • Assuming length is mandatory
2. Which of the following is the correct syntax to extract 4 characters starting at position 1 from variable text?
easy
A. ${text:1:4}
B. ${text:4:1}
C. ${text:1-4}
D. ${text:1,4}

Solution

  1. Step 1: Recall correct substring syntax

    The correct syntax uses colon separators: ${var:offset:length}.
  2. Step 2: Match syntax to options

    ${text:1:4} matches this exactly with offset 1 and length 4. Others use invalid separators or wrong order.
  3. Final Answer:

    ${text:1:4} -> Option A
  4. Quick Check:

    Correct syntax uses colons [OK]
Hint: Use colons, not commas or dashes [OK]
Common Mistakes:
  • Using commas or dashes instead of colons
  • Swapping offset and length
  • Missing braces around variable
3. Given filename="report2024.txt", what is the output of echo ${filename:6:4}?
medium
A. port
B. 2024
C. 202
D. txt

Solution

  1. Step 1: Identify substring start and length

    Offset is 6, length is 4. The string is "report2024.txt".
  2. Step 2: Extract substring from position 6

    Counting from 0: r(0) e(1) p(2) o(3) r(4) t(5) 2(6) 0(7) 2(8) 4(9). Extract 4 chars starting at index 6: "2024".
  3. Final Answer:

    2024 -> Option B
  4. Quick Check:

    Substring at 6 length 4 = "2024" [OK]
Hint: Count from zero, then take length chars [OK]
Common Mistakes:
  • Starting count at 1 instead of 0
  • Extracting wrong substring length
  • Confusing characters with digits
4. What is wrong with this code snippet?
var="hello world"
echo ${var:5,3}
medium
A. Offset 5 is out of range
B. Length 3 is too large
C. Comma is invalid separator; should use colon
D. Variable name is incorrect

Solution

  1. Step 1: Check substring syntax

    The substring syntax requires colons between offset and length, not commas.
  2. Step 2: Identify error in code

    The code uses a comma ${var:5,3} which is invalid and causes a syntax error.
  3. Final Answer:

    Comma is invalid separator; should use colon -> Option C
  4. Quick Check:

    Use colons, not commas [OK]
Hint: Use colons between offset and length [OK]
Common Mistakes:
  • Using commas instead of colons
  • Assuming offset out of range causes error
  • Misnaming variable
5. You have a date string date="2024-06-15". Which command extracts the month part ("06") using substring extraction?
hard
A. ${date:3:2}
B. ${date:6:2}
C. ${date:4:2}
D. ${date:5:2}

Solution

  1. Step 1: Locate month position in date string

    The string is "2024-06-15". Counting from 0: 2(0) 0(1) 2(2) 4(3) -(4) 0(5) 6(6) -(7) 1(8) 5(9). Month starts at index 5.
  2. Step 2: Extract 2 characters starting at index 5

    Using ${date:5:2} extracts "06" which is the month.
  3. Final Answer:

    ${date:5:2} -> Option D
  4. Quick Check:

    Month = substring at 5 length 2 [OK]
Hint: Count chars from zero, dash counts as char [OK]
Common Mistakes:
  • Starting count at 1 instead of 0
  • Extracting wrong substring length
  • Confusing day and month positions
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