命令$ make all
会出现rm: cannot remove '.lambda': No such file or directory
等错误,因此会停止。我希望它忽略rm-not-found-errors。我怎么强迫?
生成文件
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
答案 0 :(得分:202)
尝试-i
标记(或--ignore-errors
)。 The documentation似乎建议采用更强大的方式实现这一目标:
要忽略命令行中的错误,请在行的文本开头(在初始选项卡之后)写一个
-
。在将命令传递给shell执行之前,-
被丢弃。例如,
clean: -rm -f *.o
即使无法删除文件,这也会导致
rm
继续。
所有示例都使用rm
,但适用于您需要忽略错误的任何其他命令(例如mkdir
)。
答案 1 :(得分:29)
make -k
(或{xnumake上的--keep-going
)会按照您的要求行事。
你真的应该找到失败的del或rm行并向其添加-f
以防止错误发生在其他人身上。
答案 2 :(得分:19)
将清洁更改为
rm -f .lambda .lambda_t .activity .activity_t_lambda
即。不要提示删除;如果文件不存在,请不要抱怨。
答案 3 :(得分:10)
要使make实际上忽略单行上的错误,您只需将其后缀为; true
,将返回值设置为0.例如:
rm .lambda .lambda_t .activity .activity_t_lambda 2>/dev/null; true
这会将stderr输出重定向为null,并按照带有true的命令(总是返回0,导致make认为命令成功而不管实际发生了什么),允许程序流继续。
答案 4 :(得分:8)
使用rm
命令阻止管道后面的true
返回码成功返回,该命令始终返回0
(成功)
rm file | true
答案 5 :(得分:2)
更改您的clean
,以便rm
不会抱怨:
clean:
rm -f .lambda .lambda_t .activity .activity_t_lambda
答案 6 :(得分:0)
在-f
命令中添加rm
选项。
rm -f .lambda .lambda_t .activity .activity_t_lambda