linux - bash 脚本 (Makefile) 嵌套 for 循环中的意外文件结尾错误

标签 linux bash makefile

我在我尝试编写的 Makefile 中有您可以在下面看到的代码片段

当我运行它时,它在第一个“do”时给我一个意外的文件结束错误

我已经尝试删除反斜杠,尽可能多地删除空格等,但我似乎仍然无法让它工作。在这里对大多数此类问题的回答都涉及到人们要么忘记包括“完成”,要么有字距调整问题。在我的代码中似乎不是这种情况

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

它应该执行上面的测试脚本并将答案附加到 myfile.csv

相反,我收到以下错误:

/bin/sh: -c: line 7: syntax error: unexpected end of file
make: *** [tests] Error 1

谢谢!

最佳答案

这可能是以下内容的重复:How to write loop in a Makefile?

我无法在运行您的代码时遇到错误,但我确实注意到您没有正确引用变量。为了获取变量i的值,您应该在Makefile脚本中编写$$i

在你的情况下:

生成文件

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

关于linux - bash 脚本 (Makefile) 嵌套 for 循环中的意外文件结尾错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57335628/

相关文章:

java - Makefile 在目录中编译 java

c - 模式规则和 VPATH,makefile

c - 如何构建灵活的代码层次结构

c - x86_64中中断的开销是多少

linux - "who am i"命令返回空提示

linux - 喂入 pv 并写入日志文件不起作用

linux - shell 脚本内的 perl -p -i -e

linux - 按列将大型 CSV 拆分为多个文件

linux - 是否有 VNC 服务器监听 Unix 域套接字而不是标准端口 (5900)?

mysqldump 区分大小写的问题? Win->linux