Lets say we have a file with list of IPs that are space separated and you want to read each of the values to pass to a loop to perform an operation. Here is an example file with IP Addresses separated by a space:
cat ips.txt 192.168.1.1 192.168.1.10
Now, lets say you want to loop through these IPs and run a ping command against each of them.
cat ping.sh #!/bin/bash # IFS is an internal bash variable. Here, we set its value as space. IFS=$" " # Read the file "ips.txt" and store the list of values to a variable "ips" ips="$(cat ips.txt)" # Run the following loop which will loop through each of the ips and run a ping test for ip in $ips; do ping -c 1 $ip; done # Unset the IFS variable so that it wont mess with the reset of the script unset IFS
-Running this loop, will loop through the list of IP addresses and perform a ping.
./ping.sh PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.660 ms --- 192.168.1.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.660/0.660/0.660/0.000 ms PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data. 64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=0.108 ms --- 192.168.1.10 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.108/0.108/0.108/0.000 ms
Hope this helps!
Happy scripting folks! 🙂