使:命令失败后如何继续?

$ make all命令给出错误,如rm: cannot remove '.lambda': No such file or directory所以它停止。 我希望它忽略rm-not-found-errors。 我该如何强制?

Makefile文件

 all: make clean make .lambda make .lambda_t make .activity make .activity_t_lambda clean: rm .lambda .lambda_t .activity .activity_t_lambda .lambda: awk '{printf "%.4f \n", log(2)/log(2.71828183)/$$1}' t_year > .lambda .lambda_t: paste .lambda t_year > .lambda_t .activity: awk '{printf "%.4f \n", $$1*2.71828183^(-$$1*$$2)}' .lambda_t > .activity .activity_t_lambda: paste .activity t_year .lambda | sed -e 's@\t@\t\&\t@g' -e 's@$$@\t\\\\@g' | tee > .activity_t_lambda > ../RESULTS/currentActivity.tex 

尝试-i标志(或--ignore-errors )。 文件似乎提出了一个更强大的方式来实现这一点,方式:

要忽略命令行中的错误,请在该行的文本开始处(在初始选项卡之后)编写一个- 。 在命令传递到shell执行之前, -被丢弃。

例如,

 clean: -rm -f *.o 

这会导致rm继续,即使无法删除文件。

所有的例子都是使用rm ,但是适用于你需要忽略错误的任何其他命令(即mkdir )。

make -k (或者--keep-going gnumake)将会按照你所要求的做,我想。

你真的应该find失败的del或rm行,并添加一个-f来防止这个错误发生在别人身上。

改变干净

 rm -f .lambda .lambda_t .activity .activity_t_lambda 

即不要提示删除; 不要抱怨文件不存在。

为了让make实际上忽略单行上的错误,你可以简单地加上后缀; true ; true ,将返回值设置为0.例如:

 rm .lambda .lambda_t .activity .activity_t_lambda 2>/dev/null; true 

这会将stderr输出redirect到null,并按照命令的真实(总是返回0,致使make认为命令成功,而不pipe实际发生了什么),允许程序stream继续。

改变你的clean所以rm不会抱怨:

 clean: rm -f .lambda .lambda_t .activity .activity_t_lambda 

返回成功通过阻止rm的返回码在true命令,总是返回0 (成功)的pipe道后面,

 rm file | true 

在你的rm命令中-f选项。

 rm -f .lambda .lambda_t .activity .activity_t_lambda