I've been working on a script which loops over a list of sites and runs a java program on each site name.
The basic script looked like this:
cat /list/of/sites | while read s do java -jar thing.jar $s done
The problem was the while loop would break after the first execution.
After some digging, I found this Stackoverflow post which talked about how some commands hijack STDIN which messes up a while-read loop like the above. In that specific case, they were using ssh so and
ssh -n took care of it.
In my case, we needed to rewrite the while loop like this:
while read s do echo "" | java -jar thing.jar $s done < /list/of/sites
The combination of reading the file at the end of the loop and the empty
echo takes care of it.