'make run clean'正确处理interupts的shell脚本

时间:2017-10-26 02:41:33

标签: makefile csh

我第一次尝试编写一个运行我的makefile的shell脚本,运行可执行文件,然后删除可执行文件,如下所示:

make
if [ -e a.out ]; then
    ./a.out
    rm a.out
fi

在我按下a.out后发现脚本没有清除^C后,我尝试修改它:

onintr foo
make
if [ -e a.out ]; then
    ./a.out
    rm a.out
fi
foo:
    rm a.out

但它没有解决我的问题。如果你们中的任何一个人知道我如何能够完成我想要做的事情那将会非常有帮助。

1 个答案:

答案 0 :(得分:0)

在脚本顶部添加一个无限循环,在onintr例程中打印出一行,并在用Ctrl-C断开循环时测试是否按下它。删除额外的输出和无限循环。阅读make上的手册页,你可能无法控制中断时发生的事情。这就是为什么这么多make文件中都有一个Clean目标,所以你可以重新运行make来清理它的所有输出。