首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何忽略mv错误?

如何忽略mv错误?
EN

Stack Overflow用户
提问于 2010-06-30 02:28:14
回答 6查看 43.4K关注 0票数 34

我正在制作一个Makefile,它将输出文件(foo.o)移动到另一个目录(baz)。

输出文件会根据需要移动到该目录。但是,由于如果我再次输入make,make将不会重新编译输出文件,因此mv在尝试将不存在的空文件移动到baz目录时会得到一个错误。

这是我在所有编译后在我的规则make all中定义的内容:

代码语言:javascript
复制
-test -e "foo.o" || mv -f foo.o ../baz

不幸的是,我仍然收到错误。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-06-30 02:42:03

代码语言:javascript
复制
+@[ -d $(dir $@) ] || mkdir -p $(dir $@)

是我用来在文件夹不存在时静默创建它的工具。对于你的问题,像这样的东西应该是可行的

代码语言:javascript
复制
-@[ -e "foo.o" ] && mv -f foo.o ../baz
票数 10
EN

Stack Overflow用户

发布于 2013-01-10 07:24:11

Errors in Recipes (来自TFM)

要忽略配方行中的错误,请在该行文本的开头(在初始制表符之后)编写一个-

所以目标应该是这样的:

代码语言:javascript
复制
moveit:
    -mv foo.o ../baz
票数 104
EN

Stack Overflow用户

发布于 2013-01-08 21:33:27

我注意到还没有人真正回答原始问题本身,特别是如何忽略错误(目前所有的答案都只涉及在不会导致错误的情况下调用命令)。

要真正忽略错误,您可以简单地执行以下操作:

代码语言:javascript
复制
mv -f foo.o ../baz 2>/dev/null; true

这会将stderr输出重定向到null,并在命令后面跟上true (它总是返回0,使make相信命令成功,而不管实际发生了什么),从而允许程序流继续。

票数 44
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3143635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档