What does the syntax ${var:offset:length} do in bash scripting?
It extracts a substring from the variable var, starting at position offset and taking length characters.
Click to reveal answer
beginner
If var="hello world", what is the result of ${var:6:5}?
The substring starting at position 6 with length 5 is world.
Click to reveal answer
intermediate
What happens if the length in ${var:offset:length} is omitted?
The substring will include all characters from offset to the end of the string.
Click to reveal answer
intermediate
Can the offset be negative in ${var:offset:length}? What does it mean?
Yes, a negative offset counts from the end of the string backwards. For example, ${var: -3} starts 3 characters from the end.
Click to reveal answer
beginner
How would you extract the first 4 characters of a variable var in bash?
Use ${var:0:4} to get the first 4 characters starting at position 0.
Click to reveal answer
What does ${var:3:2} extract from var="abcdefg"?
A"ef"
B"cd"
C"de"
D"bc"
✗ Incorrect
Starting at position 3 (0-based), the substring is "de".
If var="hello", what does ${var:1} return?
A"h"
B"he"
C"o"
D"ello"
✗ Incorrect
Without length, it returns substring from offset 1 to end: "ello".
What happens if offset is negative in ${var:offset:length}?
ACounts from start of string
BCounts from end of string backwards
CCauses an error
DReturns empty string
✗ Incorrect
Negative offset counts backwards from the end of the string.
Which command extracts the first 3 characters of var?
A${var:0:3}
B${var:3:0}
C${var:3:3}
D${var:1:3}
✗ Incorrect
Start at 0, take 3 characters extracts the first 3 characters.
If var="bash scripting", what does ${var:5} return?
A"scripting"
B"bash scripting"
C"script"
D"bash"
✗ Incorrect
Offset 5 means start at 6th character to end, which is "scripting".
Explain how to extract a substring from a bash variable using the syntax ${var:offset:length}. Include what happens if length is omitted or offset is negative.
Think about how you cut a piece from a string, starting point and size.
You got /5 concepts.
Describe a real-life example where substring extraction in bash scripting can be useful.
Imagine you have a filename and want just the extension.
You got /4 concepts.
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
Step 1: Understand substring syntax
The syntax ${var:offset:length} extracts a substring from var starting at offset with length characters.
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).
Final Answer:
Extracts 3 characters from var starting at index 2 -> Option A
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
Step 1: Recall correct substring syntax
The correct syntax uses colon separators: ${var:offset:length}.
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.
Final Answer:
${text:1:4} -> Option A
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
Step 1: Identify substring start and length
Offset is 6, length is 4. The string is "report2024.txt".
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".
Final Answer:
2024 -> Option B
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
Step 1: Check substring syntax
The substring syntax requires colons between offset and length, not commas.
Step 2: Identify error in code
The code uses a comma ${var:5,3} which is invalid and causes a syntax error.
Final Answer:
Comma is invalid separator; should use colon -> Option C
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
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.
Step 2: Extract 2 characters starting at index 5
Using ${date:5:2} extracts "06" which is the month.
Final Answer:
${date:5:2} -> Option D
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 unknownstrongwhile earning +1 Grip toward your certificate.