Syntax error near unexpected token "done"-- while read line

iamjane

I keep getting this error: syntax error near unexpected token 'done' but I don't understand why.

I tried adding dos2unix *.sh after #!/bin/sh, but that just gave me an error that said no such file or directory in addition to the "done" error.

This is a .sh file. I'm very new to writing scripts. Help?

I'm running

sh thisfile.sh program_input input

on linux

edit I added some quotations around the variables- same error

#!/bin/sh
fst=$1
input=$2
while read line
do
    result=$(cat "$line" | program "$fst")
    if [ "$result" = "" ];
    then
        printf "$line\t=>\t *none* 0\n"
    else
        printf "$line\t=>\tyes\n"
    fi
done < "$input"

"$input" is just four rows of words like "they" "can" "fish" "they" "can" "take" "table"

If I run cat "$line" | program "$fst" it works fine

note if I take out everything in the loop and just printf $line it gives the same "done" syntax error

ilkkachu

syntax error near unexpected token 'done' is the error Bash gives when it sees the reserved word done without a matching do before it. It has nothing to do with quotes, but most likely a lot to do with your file having DOS/Windows-style CRLF line endings. The carriage return (CR, \r) is seen by the shell as a regular character, so it doesn't see the reserved word do, but do\r instead. On the other hand, on the last line it does recognize done, since it's separated from the line end, and the CR there with that space.

Run the script file itself through dos2unix. Don't add the dos2unix command in the script file.

Collected from the Internet

Please contact debug[email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Syntax error near unexpected token 'then'

From Dev

cygwin syntax error near unexpected token `done'

From Dev

BASH: syntax error near unexpected token `done' with alias named 'do'

From Dev

syntax error near unexpected token `}' `

From Dev

Syntax error near unexpected token `='()

From Dev

syntax error near unexpected token `<'

From Dev

syntax error near unexpected token `then'

From Dev

Syntax error near unexpected token `('

From Dev

Syntax error near unexpected token `('

From Dev

Syntax error near unexpected token `('

From Dev

syntax error near unexpected token `done' in bash code

From Dev

'while read line do' cause: "syntax error near unexpected token `done'" in Linux bash script

From Dev

Bash : syntax error near unexpected token ' done '

From Dev

syntax error near unexpected token `<'

From Dev

Syntax error near unexpected token `done'

From Dev

Syntax error near unexpected token done when looping a multi-statement line

From Dev

syntax error near unexpected token `('

From Dev

-bash: syntax error near unexpected token `done' in script

From Dev

syntax error near unexpected token `}'

From Dev

Syntax error in while loop near unexpected token `in'

From Dev

BASH: syntax error near unexpected token `done'

From Dev

Syntax error near unexpected token '{'

From Dev

Syntax error near unexpected token '('

From Dev

'if' statement causing 'syntax error near unexpected token `done'' in bash script

From Dev

BASH - Syntax error near unexpected token 'done'

From Dev

syntax error near unexpected token `done'

From Dev

Bash script error: line 167: syntax error near unexpected token 'then'

From Dev

syntax error near unexpected token `

From Dev

Syntax error near unexpected token `then'

Related Related

  1. 1

    Syntax error near unexpected token 'then'

  2. 2

    cygwin syntax error near unexpected token `done'

  3. 3

    BASH: syntax error near unexpected token `done' with alias named 'do'

  4. 4

    syntax error near unexpected token `}' `

  5. 5

    Syntax error near unexpected token `='()

  6. 6

    syntax error near unexpected token `<'

  7. 7

    syntax error near unexpected token `then'

  8. 8

    Syntax error near unexpected token `('

  9. 9

    Syntax error near unexpected token `('

  10. 10

    Syntax error near unexpected token `('

  11. 11

    syntax error near unexpected token `done' in bash code

  12. 12

    'while read line do' cause: "syntax error near unexpected token `done'" in Linux bash script

  13. 13

    Bash : syntax error near unexpected token ' done '

  14. 14

    syntax error near unexpected token `<'

  15. 15

    Syntax error near unexpected token `done'

  16. 16

    Syntax error near unexpected token done when looping a multi-statement line

  17. 17

    syntax error near unexpected token `('

  18. 18

    -bash: syntax error near unexpected token `done' in script

  19. 19

    syntax error near unexpected token `}'

  20. 20

    Syntax error in while loop near unexpected token `in'

  21. 21

    BASH: syntax error near unexpected token `done'

  22. 22

    Syntax error near unexpected token '{'

  23. 23

    Syntax error near unexpected token '('

  24. 24

    'if' statement causing 'syntax error near unexpected token `done'' in bash script

  25. 25

    BASH - Syntax error near unexpected token 'done'

  26. 26

    syntax error near unexpected token `done'

  27. 27

    Bash script error: line 167: syntax error near unexpected token 'then'

  28. 28

    syntax error near unexpected token `

  29. 29

    Syntax error near unexpected token `then'

HotTag

Archive