Bird
Raised Fist0
Bash Scriptingscripting~5 mins

Reading files line by line (while read) in Bash Scripting - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the while read loop do in bash scripting?
It reads a file line by line, assigning each line to a variable for processing inside the loop.
Click to reveal answer
intermediate
How do you safely read lines with spaces or special characters using while read?
Use IFS= before read to preserve leading/trailing spaces and special characters.
Click to reveal answer
intermediate
Why is it better to use while read instead of cat file | while read?
Using while read with input redirection avoids creating a subshell, so variables set inside the loop remain accessible after it ends.
Click to reveal answer
beginner
What happens if you don't use IFS= when reading lines with read?
The read command trims leading/trailing spaces and splits the line on spaces or tabs, which can change the original line content.
Click to reveal answer
beginner
Show a simple bash script snippet to read a file named data.txt line by line and print each line.
while read -r line; do echo "$line" done < data.txt
Click to reveal answer
What does the -r option do in read -r?
APrevents backslash escapes from being interpreted
BReads raw binary data
CReads only the first word of the line
DReads the file in reverse order
Which command correctly reads a file line by line without losing variable values after the loop?
Awhile read line; do ... done <<< "$(cat file.txt)"
Bcat file.txt | while read line; do ... done
Cwhile read line; do ... done < file.txt
Dfor line in $(cat file.txt); do ... done
What is the purpose of setting IFS= before read?
ATo split the line into words
BTo ignore empty lines
CTo convert tabs to spaces
DTo preserve leading and trailing spaces in the line
Which of these is a common mistake when reading lines with read?
ANot redirecting the file into the loop and using a pipe instead
BUsing <code>read -r</code> to prevent backslash escapes
CUsing <code>IFS=</code> to preserve spaces
DUsing a variable to store each line
What does this script print?
while read -r line; do echo "$line"; done < file.txt
ANothing, it has a syntax error
BEach line of file.txt printed exactly as is
CThe file content reversed
DOnly the first word of each line
Explain how to read a file line by line in bash using while read and why it is useful.
Think about how you would read a list of names one at a time.
You got /4 concepts.
    Describe the role of IFS= and -r options when reading lines with read.
    Consider how spaces and backslashes might change the line if not handled.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the command while IFS= read -r line; do echo "$line"; done < file.txt do in a bash script?
      easy
      A. Deletes the contents of file.txt.
      B. Reads the entire file at once and prints it.
      C. Writes each line of file.txt to a new file.
      D. Reads the file file.txt line by line and prints each line.

      Solution

      1. Step 1: Understand the while read loop

        The loop reads input line by line from the redirected file file.txt.
      2. Step 2: Check the action inside the loop

        Each line read is stored in variable line and printed with echo.
      3. Final Answer:

        Reads the file file.txt line by line and prints each line. -> Option D
      4. Quick Check:

        Line-by-line reading = A [OK]
      Hint: Remember: while read loops read files line by line [OK]
      Common Mistakes:
      • Thinking it reads the whole file at once
      • Confusing input redirection with output
      • Ignoring the role of IFS= and -r
      2. Which of the following is the correct syntax to read a file line by line in bash?
      easy
      A. while read line; do echo $line; done < file.txt
      B. while read -r line; do echo $line; done > file.txt
      C. while read line; do echo $line; done >> file.txt
      D. while read line; do echo $line; done | file.txt

      Solution

      1. Step 1: Identify input redirection for reading

        The correct way to read from a file is using input redirection: < file.txt.
      2. Step 2: Check the loop syntax

        while read line; do ... done is the standard loop to read lines.
      3. Final Answer:

        while read line; do echo $line; done < file.txt -> Option A
      4. Quick Check:

        Input redirection with < = C [OK]
      Hint: Use < file.txt to feed file lines into the loop [OK]
      Common Mistakes:
      • Using output redirection (>) instead of input (<)
      • Piping file name instead of redirecting input
      • Missing the -r option to prevent backslash escapes
      3. What will be the output of this script if file.txt contains:
      apple
      banana
      cherry

      Script:
      while IFS= read -r line; do echo "Fruit: $line"; done < file.txt
      medium
      A. Fruit: apple Fruit: banana Fruit: cherry
      B. apple banana cherry
      C. Fruit: apple banana cherry
      D. Syntax error

      Solution

      1. Step 1: Understand the loop reading each line

        The loop reads each line from file.txt separately.
      2. Step 2: Check the echo command

        Each line is printed prefixed with "Fruit: ".
      3. Final Answer:

        Fruit: apple Fruit: banana Fruit: cherry -> Option A
      4. Quick Check:

        Line prefixing with echo = B [OK]
      Hint: Each loop iteration prints one line with prefix [OK]
      Common Mistakes:
      • Expecting all lines printed on one line
      • Ignoring the prefix in echo
      • Confusing input and output redirection
      4. Identify the error in this script snippet:
      while read line; do echo $line; done file.txt
      medium
      A. Echo command syntax is wrong
      B. Incorrect variable name used
      C. Missing input redirection operator < before file.txt
      D. Missing semicolon after read

      Solution

      1. Step 1: Check how the file is provided to the loop

        The file must be redirected as input using < file.txt, not as an argument.
      2. Step 2: Confirm syntax correctness

        The rest of the syntax is correct; variable and echo usage are fine.
      3. Final Answer:

        Missing input redirection operator < before file.txt -> Option C
      4. Quick Check:

        Input redirection needed = D [OK]
      Hint: Use < file.txt to feed file lines, not argument [OK]
      Common Mistakes:
      • Passing filename as argument instead of redirecting input
      • Forgetting semicolon after read (optional here)
      • Misusing echo syntax
      5. You want to read a file line by line and skip empty lines. Which script snippet correctly does this?
      hard
      A. while read line; do echo "$line"; done < file.txt | grep '^$'
      B. while IFS= read -r line; do if [[ -n $line ]]; then echo "$line"; fi; done < file.txt
      C. cat file.txt | while read line; do echo "$line"; done
      D. while IFS= read -r line; do echo "$line"; done < file.txt

      Solution

      1. Step 1: Understand skipping empty lines

        We need to check if the line is not empty using [[ -n $line ]].
      2. Step 2: Confirm reading and condition

        while IFS= read -r line; do if [[ -n $line ]]; then echo "$line"; fi; done < file.txt reads lines safely and prints only non-empty lines inside the loop.
      3. Final Answer:

        while IFS= read -r line; do if [[ -n $line ]]; then echo "$line"; fi; done < file.txt -> Option B
      4. Quick Check:

        Condition inside loop filters empty lines = A [OK]
      Hint: Use if [[ -n $line ]] inside loop to skip empty lines [OK]
      Common Mistakes:
      • Using external grep after loop (may lose variable scope)
      • Not checking for empty lines inside the loop
      • Using unnecessary cat command
      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