Bashスクリプト:予期しないファイルの終わり(FreeBSD)

Bashスクリプト:予期しないファイルの終わり(FreeBSD)

FreeBSDシステムにSubversionスケジューラをインストールするためにbashスクリプトを生成する作業がありましたが、残念ながら期待どおりに動作しませんでした。

私が走るとき

#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'は、スクリプトに\r\nUnixスタイルではなくDOSスタイルの行末があることを示します\n。この問題は簡単なコマンドで解決するsedか、次の方法で解決できます。DOS 2 Unixシステムにすでにインストールされている可能性のあるコマンドです。

テキストエディタには、行末スタイルを選択するオプションがあります。その場合は、* nixで使用するスクリプトを編集するときにUnixスタイルを使用してください。このようなエディタを使用して既存のファイルの行末スタイルを変換できますが、複数のファイルを回復したい場合は少し面倒です。

関連情報