I'm trying to implement an infinite loop bash script for reading in a file, doing something and check counter condition, when counter condition reaches 0 it breaks out of the infinite loop. I've tried several iteration and none has worked for me. Pseudo-code would be something line this..
#!/bin/bash
counter=10
while true
do
read host from file
ping -c 1 host > /dev/null
if [ $? -eq 0 ]
then
(($counter+1))
do_something_to_the_host
else
(($counter-1))
if [ $counter -eq 0 ]
then
break # this breaks out of the while true infinite loop
fi
fi
done
Can anyone show me how to implement something like the above in bash please?
As always, thanking you in advance.
You want two nested loops: an outer infinite loop, and an inner loop that reads each line from the input file. break
takes a numerical argument to specify how many loops to break out of.
counter=10
while true
do
while read host
do
ping -c 1 host > /dev/null
if [ $? -eq 0 ]
then
(($counter+=1))
do_something_to_the_host
else
(($counter-=1))
if [ $counter -eq 0 ]
then
break 2
fi
fi
done < file
done
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.