read command in Bash Scripting - Time & Space Complexity
We want to understand how the time taken by the read command changes as the input size grows.
Specifically, how does reading input line by line affect the total time?
Analyze the time complexity of the following code snippet.
#!/bin/bash
while read line; do
echo "$line"
done < input.txt
This script reads each line from a file and prints it out one by one.
- Primary operation: Reading and printing each line inside the
while readloop. - How many times: Once for every line in the input file.
Each line causes one read and one print operation, so the total work grows directly with the number of lines.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 reads and 10 prints |
| 100 | About 100 reads and 100 prints |
| 1000 | About 1000 reads and 1000 prints |
Pattern observation: The total time grows in a straight line as the number of lines increases.
Time Complexity: O(n)
This means the time grows directly in proportion to the number of lines read.
[X] Wrong: "The read command always takes constant time no matter how many lines there are."
[OK] Correct: Each line requires a separate read operation, so more lines mean more time.
Understanding how input reading scales helps you write scripts that handle large files efficiently and shows you can think about performance in real tasks.
"What if we read the entire file at once into a variable instead of line by line? How would the time complexity change?"
Practice
read command do in a bash script?Solution
Step 1: Understand the purpose of
Thereadreadcommand pauses the script and waits for the user to type something.Step 2: Identify what happens with the input
The input typed by the user is saved into a variable for later use in the script.Final Answer:
It waits for user input and stores it in a variable. -> Option CQuick Check:
read = wait for input and save [OK]
- Thinking read prints output
- Confusing read with echo
- Assuming read runs commands
username?Solution
Step 1: Recall basic read syntax
The correct syntax to store input isread variable_namewithout any special characters.Step 2: Check each option
read username usesread username, which correctly stores input inusername. Others misuse flags or symbols.Final Answer:
read username -> Option DQuick Check:
read variable_name = correct syntax [OK]
- Adding $ before variable in read
- Using > instead of variable name
- Misusing -p without prompt text
echo "Enter your age:"
read age
echo "You are $age years old."
Solution
Step 1: Understand script flow
The script prints a prompt, waits for user input saved inage, then prints a message using that input.Step 2: Predict output after input
If user types 25, output will be "You are 25 years old." showing the input value.Final Answer:
You are [user input] years old. -> Option AQuick Check:
read stores input, echo prints it [OK]
- Expecting literal $age printed
- Thinking read does not save input
- Assuming syntax error without reason
read -p "Enter your city: " city
echo "City is $city"
Solution
Step 1: Check usage of read with -p
The-poption allows showing a prompt before reading input, which is valid in bash.Step 2: Verify variable placement and quotes
The variablecityis correctly placed after the prompt, and quotes around prompt text are correct.Final Answer:
The script is correct and will work as expected. -> Option AQuick Check:
read -p "prompt" variable = valid [OK]
- Thinking -p is invalid
- Misplacing variable before prompt
- Removing quotes around prompt
first and last, from one line of user input separated by space. Which command correctly does this?Solution
Step 1: Understand reading multiple variables
Thereadcommand can take multiple variable names to split input by spaces.Step 2: Analyze each option
read first last correctly usesread first lastto read two words into two variables. read -p first last misuses -p. read first; read last reads twice separately. read -a first last uses -a incorrectly here.Final Answer:
read first last -> Option BQuick Check:
read var1 var2 = split input by space [OK]
- Using multiple read commands instead of one
- Misusing -p option for multiple variables
- Using -a without array handling
Ready to prove it?
Pass the test and this pattern moves unknown
