1

我想建立一个 teampeak 机器人,我有这个脚本来启动它。

    #!/bin/bash
    if [ $1 = 'stop' ] 
      then 
        echo stop >> /root/ts3bot/tmp/log.txt
      date >>/root/ts3bot/tmp/log.txt
        echo ======================
        screen -S bot -X quit
      fi

    if [ $1 = 'start' ] 
      then 
      echo start >> /root/ts3bot/tmp/log.txt
      date >> /root/ts3bot/tmp/log.txt
      echo ======================
        screen -dmS bot php core.php
        ps ax | grep -v grep | grep -v -i SCREEN | grep links >> /root/ts3bot/tmp/log.txt
    fi
     <here is an extra blank line>

但是当我输入bash bot.sh它时说syntax error: unexpected end of file 我不知道​​我做错了什么:/ chmod 设置为755

谢谢!

4

1 回答 1

3

我怀疑您可能已经将这个 shell 脚本从 Microsoft Windows 机器复制到了 Linux 或 Unix 服务器。如果是这样,问题可能是您有 DOS/Windows 行结尾,这可能会导致脚本中出现不可预知的结果。

要在 Linux 或 Unix 服务器上检查脚本是否有错误的行结尾,您可以通过在 shell 提示符下键入以下内容来转储文件(有点像十六进制转储):

$ od -c bot.sh | less

并寻找\nor\r\r\n\r如果行的末尾似乎有 a ,那么您已经发现了问题。

要解决此行尾问题,您可以使用一个工具,例如dos2unix它是否安装在您的系统上。如果你没有,dos2unix但你在 Linux 服务器上,你可以这样做:

$ sed -i 's/\r//' bot.sh

转换文件。

最后......看脚本的第一行,#!/bin/bash?因此,您不需要使用 运行它bash bot.sh,您可以直接使用 执行它./bot.sh

于 2015-08-21T18:03:22.913 回答