2012-03-04 143 views
4

我新来这个Bash/Shell的东西,并得到一个单一的任务网络分析。在Bash中循环:语法错误:意外的文件结尾

只是做一个简单的循环,但得到一个奇怪的错误已经无法修复,尽管2个小时的谷歌抓取:

#!/bin/bash 
x=1 
while [ $x -le 5 ] 
do 
    echo "Welcome $x times" 
    x=$(($x + 1)) 
done 

我一直在使用一个使用以下语法循环尝试

#!/bin/bash 
for i in {1..5} 
do 
    echo "Welcome $i times" 
done 

每当我把第一个脚本在我的服务器我得到以下信息:

./temp.sh: line 8: syntax error: unexpected end of file 

运行已经执行下面的命令添加权限,使文件的可执行文件之前:

ls -l temp.sh 
chmod +x temp.sh 

正如一个侧面说明,我发现关于循环以下计算器问题,复制的“固定码”,并得到了同样的错误:Looping a Bash Shell Script

我运行版本4+,并使用G-VIM作为Windows 7上的文本编辑器。任何人有任何想法?

设法解决这个自己:

看到,因为我的名声仍然过低,我目前还不能回答这个自己,所以阻止人们在这里浪费时间还有我是如何固定它:

好吧,我已经设法解决这个问题,所以会留给任何其他人看看周围。

我的问题是我使用FileZilla连接到我的服务器。看起来,即使我使用WinVi或G-Vim创建文件,当我将文件传输到服务器时,FileZilla在我的文件末尾添加了一些额外字符的形式,就像在运行Windows时一样。

我切换到WinSCP作为我的连接代理,并试过它,嘿presto工作正常。

感谢您的其他答案。

刘易斯

+2

上面的代码是好的。如果您使用Windows进行编辑,您确定您使用的是正确的行结束符? – 2012-03-04 15:04:35

+0

嗨奥利 - 我只是修复它,请参阅我对上述描述的更改不能发布答复自己太低代表。谢谢。 – 2012-03-04 15:21:17

+0

您现在有足够的知名度将您的解决方案转换为正确的答案,并接受它来解决此问题。请做。 – 2014-06-13 08:26:39

回答

1

好吧,我已经设法解决这个问题,所以将留给任何其他人看看周围。

我的问题是我使用FileZilla连接到我的服务器。看起来,即使我使用WinVi或G-Vim创建文件,当我将文件传输到服务器时,FileZilla在我的文件末尾添加了一些额外字符的形式,就像在运行Windows时一样。

我切换到WinSCP作为我的连接代理,并试过它,嘿presto工作正常。

0

你有done后换行?这可能是麻烦的原因。

它可以在您机器上的Cygwin中使用bash吗? (应该是的;当复制到我的Mac,例如,与任何shbash,或者ksh运行它,它工作正常。)

+0

嗨乔纳森,谢谢你的回答。没有新的路线。然而,我只是设法将脚本内容直接运行到bash中,并且它运行良好,因此它不是代码本身的语法错误。我刚刚发现了问题所在,如果你感兴趣,我会在一分钟内发布自己的答案。刘易斯 – 2012-03-04 15:17:41

2

运行bash脚本使用DOS2UNIX的命令就可以了

dos2unix <bashScript> 
./<bashScript> 
+0

感谢您的回答阿迪亚 - 我已经试过了,但dos2unix或是他fromdos的arent安装的在线服务器上,我没有管理权限。另外即时通讯使用不添加Windows CR的文本编辑器,这是我认为是最初的问题。 – 2012-03-04 15:16:39

0

我也有这个问题。其实这个问题的解决方案是在编辑菜单中编写脚本检查的时候。EOL转换是否是Unix格式。它应该是用于shell脚本的Unix格式。

相关问题