Bird
Raised Fist0
Bash Scriptingscripting~15 mins

Substring extraction (${var:offset:length}) in Bash Scripting - Mini Project: Build & Apply

Choose your learning style10 modes available
Extracting Substrings in Bash Scripts
📖 Scenario: You are working on a bash script that processes text data. Sometimes you need to extract a part of a string, like a word or a few characters, to use it later in your script.Think of it like cutting a slice from a loaf of bread: you pick where to start and how thick the slice should be.
🎯 Goal: Learn how to extract a substring from a variable using the ${var:offset:length} syntax in bash scripting.You will create a string variable, set the starting point and length for the slice, extract the substring, and then print it.
📋 What You'll Learn
Create a string variable with a specific value
Create variables for offset and length to define the substring
Use the substring extraction syntax ${var:offset:length}
Print the extracted substring
💡 Why This Matters
🌍 Real World
Substring extraction is useful when you need to process parts of text data, like extracting usernames, file extensions, or codes from larger strings in scripts.
💼 Career
Many automation and scripting tasks in IT, DevOps, and software development require manipulating strings efficiently. Knowing substring extraction helps you write cleaner and more powerful bash scripts.
Progress0 / 4 steps
1
Create the string variable
Create a variable called text and set it to the string "Hello, world!".
Bash Scripting
Hint

Use the syntax variable_name="value" to create a string variable in bash.

2
Set offset and length variables
Create two variables: offset set to 7 and length set to 5.
Bash Scripting
Hint

Assign numbers to variables without quotes, like offset=7.

3
Extract the substring using ${var:offset:length}
Create a variable called substring that extracts a substring from text starting at offset and with length characters using the syntax ${text:offset:length}.
Bash Scripting
Hint

Use the syntax exactly as substring=${text:offset:length} to extract the substring.

4
Print the extracted substring
Print the value of the variable substring using echo.
Bash Scripting
Hint

Use echo "$substring" to print the substring.

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