我有一个任务是创建一个 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 风格。您可以使用这样的编辑器来转换现有文件的行结束样式,但如果您想修复多个文件,这可能会有点乏味。