【问题标题】:Looping in Bash: syntax error: unexpected end of file在 Bash 中循环:语法错误:文件意外结束
【发布时间】:2012-03-22 07:00:00
【问题描述】:

我不熟悉这个 Bash/Shell 的东西,并且必须为 uni 分配做一些网络分析。

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

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

我尝试过使用以下语法的 for 循环:

#!/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

顺便说一句,我发现了以下有关循环的 stackoverflow 问题,复制了“固定代码”并得到了相同的错误:Looping a Bash Shell Script

我正在运行版本 4+ 并在 Windows 7 上使用 G-VIM 作为文本编辑器。有人有什么想法吗?

自己解决了这个问题:

鉴于我的声誉仍然太低,我目前无法自己回答这个问题,所以为了阻止人们在那里浪费时间,我是这样解决的:

好的,我已经设法解决了这个问题,所以将把它留给其他人看看。

我的问题是我使用 FileZilla 连接到我的服务器。似乎即使我使用 WinVi 或 G-Vim 创建文件,当我将文件传输到运行 Windows 的服务器时,FileZilla 也会在文件末尾添加某种形式的额外字符。

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

感谢其他答案。

刘易斯

【问题讨论】:

  • 上面的代码没问题。如果您使用 Windows 进行编辑,您确定使用了正确的行尾吗?
  • 嗨 Oli - 我刚刚修复了它,请查看我对上述描述的更改无法自己发布答案,因为代表太低了。谢谢。
  • 您现在有足够的声誉将您的解决方案移至正确的答案并接受它以结束此问题。请做。

标签: windows linux bash filezilla winscp


【解决方案1】:

done 后面有换行符吗?这可能是问题的原因。

它是否适用于您机器上 Cygwin 中的 bash? (它应该;当复制到我的 Mac 时,它可以正常工作,例如,使用 shbashksh 中的任何一个运行它。)

【讨论】:

  • 您好乔纳森,感谢您的回答。没有新线。但是,我只是设法将脚本内容直接运行到 bash 中,并且它运行良好,因此它不是代码本身的语法错误。我刚刚弄清楚问题出在哪里,如果您有兴趣,我会在一分钟内发布我自己的答案。刘易斯
【解决方案2】:

在运行 bash 脚本之前,对其使用 dos2unix 命令

dos2unix <bashScript>
./<bashScript>

【讨论】:

  • 感谢 Aditya 的回答 - 我已经尝试过了,但是在线服务器上没有安装 dos2unix 或 fromdos,而且我没有管理员权限。我还使用了一个不添加 Windows CR 的文本编辑器,我认为这是最初的问题。
【解决方案3】:

我也遇到了这个问题。实际上,这个问题的解决方案是在编辑菜单中编写脚本检查 EOL 转换是否为 Unix 格式。它应该是 Unix 格式的 shell 脚本。

【讨论】:

    【解决方案4】:

    好的,我已经设法解决了这个问题,所以将把它留给其他环顾四周的人。

    我的问题是我使用 FileZilla 连接到我的服务器。似乎即使我使用 WinVi 或 G-Vim 创建文件,当我将文件传输到运行 Windows 的服务器时,FileZilla 也会在文件末尾添加某种形式的额外字符。

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

    【讨论】:

      猜你喜欢
      • 2011-09-16
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      相关资源
      最近更新 更多