I'm trying to get this while loop (using nano) to download some websites from this URL but I keep getting the error "syntax error near unexpected token `done'":

while read <FIRST-LAST> do
        echo FIRST-LAST
        curl -O https://www.uoguelph.ca/arts/history/people/FIRST-LAST
done < formatted_history.txt

1 Answer 1

  • Either the do should appear on a new line, or it needs to have a semi-colon inserted in front of it
  • <FIRST-LAST> should actually be the name of a shell variable, and FIRST-LAST should be a reference to that variable. < and > are not legal characters for shell variables, so we can deduce that something else must be substituted here instead. person seems to be as good a variable name as any in this particular case.

I think something like this should work much better:

while read person ; do
        echo "${person}"
        curl -O "https://www.uoguelph.ca/arts/history/people/${person}"
done < formatted_history.txt

This assumes that the file formatted_history.txt actually exists in the current directory and is a list of people from the https://www.uoguelph.ca/arts/history/people/ page - something like:

... etc ...
  • 3
    THANK YOU SO MUCH! This worked perfectly, I can't explain how long this has taken me and you just answered it. Thank you!!! Commented Jan 20, 2017 at 1:14

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .