I have a shell script where I pass a txt file to the script as follows:
./run.sh < list.txt
Within the script, I am doing a “while read LIST do ... end“
It all works well, and the script executes using the list.
However, now I want to have a second while read LIST do ... end in the same shell script. I want it to read again from the original list I’m passing it on execution, but it doesn’t work. It reads the list.txt file for the first loop, but not the second.
What do I do to make the script read list.txt each time I’m asking for it?
You can’t read stdin twice. Try passing list.txt on the command-line rather than redirecting it.
Then in your script:
Alternatively, save the contents of stdin off the first time you read through it. For instance: