スクリプトで "^M: コマンドが見つかりません" [重複]

スクリプトで "^M: コマンドが見つかりません" [重複]

次のスクリプトを実行しようとしています。

#!/bin/csh
# USAGE EXAMPLE: solve_mysteries.scr ops6.txt 2
# USAGE EXAMPLE: solve_mysteries.scr allops.txt 1800
set opsfile = $1
set maxtime = $2
set f = $3

set outfile = brute_solutions.dat
set outfile2 = brute_constant.dat
set outfile3 = brute_formulas.dat
if -f $outfile /bin/rm $outfile
if -f $outfile2 /bin/rm $outfile2
if -f $outfile3 /bin/rm $outfile3

echo Trying to solve mysteries with brute force...

echo Trying to solve $f...
echo /bin/cp -p $f mystery.dat
/bin/cp -p $f mystery.dat
echo $opsfile arity2templates.txt mystery.dat results.dat >args.dat

timeout {$maxtime}s ./symbolic_regress3.x

私は次のような結果を得ます。

^M: Command not found.
^M: Command not found.
Trying to solve mysteries with brute force...
^M: Command not found.
...ing to solve ../example_data/example2.txt_train
 mystery.dat./example_data/example2.txt_train
/bin/cp: cannot stat '../example_data/example2.txt_train'$'\r': No such file or directory
^M: Command not found.
timeout: invalid time interval ‘60\rs’
Try 'timeout --help' for more information.
^M: Command not found.

なぜ「^M:コマンドが見つかりません」エラーが発生するのかご存知ですか?

答え1

cat -v script少なくとも一部の行は、おそらく最後にキャリッジリターン(CR)文字があることを示しています。

あなたのスクリプトはDOS / Windows形式のテキストファイルです。 Unix形式に変換する必要があります(CRの削除など)。これはエディタまたはツールを介して行うことができますdos2unix

答え2

テキストエディタであるSublimetextをダウンロードできる場合は、View->LineEndings->Unixで行末を変更できます。

その後、ファイルを保存してやり直してください。

関連情報