Linux 嵌套for循环的bash脚本(Makefile)中出现意外的文件结尾错误
我有代码片段,你可以在我的Makefile中看到,我正在尝试编写 当我运行它时,它在第一个“do”上给我一个意外的文件结束错误 我试着去掉反斜杠,尽可能多地去掉空格,等等,但我似乎还是无法让它工作。在这里,对大多数问题的回答都涉及到人们忘记包含“完成”或出现紧排问题。在我的代码中似乎不是这样Linux 嵌套for循环的bash脚本(Makefile)中出现意外的文件结尾错误,linux,bash,makefile,Linux,Bash,Makefile,我有代码片段,你可以在我的Makefile中看到,我正在尝试编写 当我运行它时,它在第一个“do”上给我一个意外的文件结束错误 我试着去掉反斜杠,尽可能多地去掉空格,等等,但我似乎还是无法让它工作。在这里,对大多数问题的回答都涉及到人们忘记包含“完成”或出现紧排问题。在我的代码中似乎不是这样 用于110 25 50 100 1000 10000中的i\ 做\ 对于1 10 25 50 100 1000 10000中的j\ 做\ ./myprogram--threads=j iterations=
用于110 25 50 100 1000 10000中的i\
做\
对于1 10 25 50 100 1000 10000中的j\
做\
./myprogram--threads=j iterations=i>>myfile.csv\
完成\
完成
它应该执行上面的测试脚本,并将答案附加到myfile.csv
相反,我得到了以下错误:
/bin/sh: -c: line 7: syntax error: unexpected end of file
make: *** [tests] Error 1
谢谢 这可能与以下内容重复: 我无法让您运行代码时出错,但我注意到您没有正确引用变量。为了获得变量
i
的值,应该在Makefile脚本中编写$$i
就你而言:
生成文件
为什么还要加上所有的冒号和反斜杠?如果从myprogram行中删除反斜杠,应该可以。反斜杠“转义”下一个字符,该字符将是新行,但未正确解释,因此失败。
done\(新行)是否已完成
评估为donedone
,而不是done;完成
?对外壳变量的引用错误且缺少代码>在第一次完成后
。见答复。
target:
for i in 1 10 25 50 100 1000 10000; \
do \
for j in 1 10 25 50 100 1000 10000; \
do \
./myprogram --threads=$$j iterations=$$i>>myfile.csv; \
done ; \
done