Often you may need to read data from text file in shell script. There are several ways to do this in Linux. In this article, we will learn how to read data from text file using for loop, do while, as well as echo.
Shell Script to Read Data from Text File using For Loop
Let us say you have the following file data.txt in Linux with each line having one day of the week.
cat data.txt Monday Tuesday Wednesday Thursday Friday Saturday Sunday
Let us look at the different ways to read the file.
Using For Loop
In this case, we store the result of cat command in a temporary variable of for loop and iterate through each line of it. In each iteration, we use echo command to print the line.
#!/bin/bash file=data.txt for i in `cat $file` do echo "$i" done
Using While Command
You can also use do-while command to read the file. It is similar to the above for loop. One difference is that we input filename at the end of the do-while-done command.
#!/bin/bash while read LINE do echo "$LINE" done < data.txt
In while loop, we use read command to read one line from the file, as long as there are unread lines in it, and store it LINE variable. In each iteration, we use echo command to display value of $LINE variable. But the above code will skip blank lines. If you also want to read and print blank lines, modify the while loop’s condition as shown below.
#!/bin/bash while IFS = read -r LINE do echo "$LINE" done < data.txt
Using Echo Command
You can also use echo command to display file contents but in this case, it will display all file contents on a single line.
$ echo $( < data.txt ) Monday Tuesday Wednesday Thursday Friday Saturday Sunday
In this short article, we have learnt how to read lines of text file one by one and display their contents. Also read: