bicepjai bicepjai - 11 days ago 5
Linux Question

in bash script unexpected "syntax error: unexpected end of file" on if statement

W/hen i run the following code snippet

if [ "foo" = "foo" ];
echo "true"
echo "false"
echo "end"

i get line 9: syntax error: unexpected end of file

this doesn't make any sense. echo statements works fine, but when the if statement is encountered it gives the above mentioned error.


You're on Cygwin, right?

As I said in a comment, when I copy-and-paste your script and run it on my system, it works; the output is


But when I change the line endings from the Unix style '\n' to the Windows style '\r\n', I get the same error you got.

With the Windows-style line endings, bash doesn't see the then keyword; it sees a command named then\r. It never tries to execute it because it's scanning for the matching then or fi for the if keyword (which it recognized because it's not at the end of the line).

Make sure your shell scripts use Unix-style line endings.