Bash 脚本:意外的文件结束 (FreeBSD)

Bash 脚本:意外的文件结束 (FreeBSD)

我有一个任务是创建一个 bash 脚本来在我的 freebsd 机器上安装 Subversion 调度程序,不幸的是它没有按预期工作。

当我跑步时

#bash -x ./installSubversion.sh

我总是收到此错误消息

+ REPOPATH=$'/usr/ports/devel/subversion\r'
+ CHECKPATH=$'/usr/local/bin/svnserve\r'
>./installSubversion.sh: line 22: syntax error: unexpected end of file

这是脚本 installSubversion.sh

#!/usr/bin/env bash
###########
### Installing subversion(svn) on Freebsd
###########
REPOPATH="/usr/ports/devel/subversion"
CHECKPATH="/usr/local/bin/svnserve"
if [ ! -x "$CHECKPATH"  ] || [ "$1" = "-force" ] ;
then
        echo "Trying to install subversion from ports"
        if [ "$1" = "-force"  ];
        then
                /usr/sbin/pkg_delete -fx subversion-
                cd $REPOPATH
                /usr/bin/make -DBATCH reinstall clean
        else
                cd $REPOPATH
                /usr/bin/make -DBATCH install clean
        fi
else
        echo "subversion is Installed"
fi

我究竟做错了什么?

答案1

错误消息REPOPATH=$'/usr/ports/devel/subversion\r'表明您的脚本具有 DOS 样式的行结尾\r\n而不是 Unix 样式\n。这可以通过一个简单的命令来修复sed,或者使用DOS2UNIX命令,您可能已经在系统上安装了该命令。

您的文本编辑器可能有一个选项来选择行结束样式。如果是这样,请确保在编辑 *nix 中使用的脚本时使用 Unix 风格。您可以使用这样的编辑器来转换现有文件的行结束样式,但如果您想修复多个文件,这可能会有点乏味。

相关内容