Reading input from files
Now, it may seem that these loops can do a little more than just count down numbers. We may want to read data in from a text file and process each line. The shell built-in read
command that we saw earlier in this book can be used to read a file line by line. In this way, we can use a loop to process each line of a file.
To demonstrate some of these functionalities, we will use a file that contains the server addresses. These could be hostnames or IP addresses. In the following example, we will make use of the IP addresses of Google DNS Servers. The following command shows the contents of the servers.txt
file:
$cat servers.txt 8.8.8.8 8.8.4.4
Using the read
command in the condition of the while
loop, we can loop as long as we have more lines to read from the file. We specify the input file directly after the done
keyword. For each line that we read from the file, we can test if the server is up with the command ping
and if the server is responding, we append it to a...