我正在尝试运行以下脚本。
#!/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 更改行结尾
然后保存文件并尝试再次运行。