sbatchエラー:DOSの改行コード(\r\n)が予期されたUNIXの改行コードと異なります


このエラーが発生する主な原因は、バッチスクリプトをWindows環境で作成し、UNIX/Linux環境で実行しようとした場合です。Windowsでは改行コードとして"\r\n"が使用されますが、UNIX/Linuxでは"\n"が使用されます。そのため、Windows形式の改行コードがバッチスクリプトに残っていると、sbatchコマンドが予期しない改行コードを検出してエラーが発生します。

  1. 改行コードをUNIX形式に変換する方法として、dos2unixコマンドを使用する方法があります。以下は、この方法のコード例です。

    $ dos2unix batch_script.sh

    このコマンドは、バッチスクリプトの改行コードを自動的にUNIX形式に変換します。

  2. エディタを使用して改行コードを変換する方法もあります。例えば、vimエディタを使用する場合、以下の手順で改行コードを変換できます。

    $ vim batch_script.sh

    バッチスクリプトを開いた後、以下のコマンドを入力します。

    :set ff=unix
    :wq

    これにより、バッチスクリプトの改行コードがUNIX形式に変換されます。

  3. シェルスクリプトを使用して改行コードを変換する方法もあります。以下は、この方法のコード例です。

    $ tr -d '\r' < batch_script.sh > converted_script.sh

    このコマンドは、batch_script.shの改行コードから\r(キャリッジリターン)を削除し、converted_script.shという新しいファイルに保存します。

これらの方法を使用して、バッチスクリプトの改行コードをUNIX形式に変換することで、sbatchコマンドのエラーを解決できます。