我正在制作一个将输出文件(foo.o
)移动到不同目录(baz
)的Makefile。如何忽略mv错误?
输出文件根据需要移动到目录。但是,如果我再次键入make
,make将不会重新编译输出文件,但当mv
尝试将不存在的空文件移动到目录baz
时会出错。
原来这就是我在规则make all
所有编译后的定义:
-test -e "foo.o" || mv -f foo.o ../baz
不幸的是,我仍然得到错误。
我正在制作一个将输出文件(foo.o
)移动到不同目录(baz
)的Makefile。如何忽略mv错误?
输出文件根据需要移动到目录。但是,如果我再次键入make
,make将不会重新编译输出文件,但当mv
尝试将不存在的空文件移动到目录baz
时会出错。
原来这就是我在规则make all
所有编译后的定义:
-test -e "foo.o" || mv -f foo.o ../baz
不幸的是,我仍然得到错误。
[email protected][ -d $(dir [email protected]) ] || mkdir -p $(dir [email protected])
是我用默默地创建一个文件夹,如果它不存在。对于您的问题,这样的事情应该工作
[email protected][ -e "foo.o" ] && mv -f foo.o ../baz
-test -e "foo.o" || if [ -f foo.o ]; then mv -f foo.o ../baz; fi;
这应该工作
喜欢的东西
test -e "foo.o" && mv -f foo.o ../baz
应该工作:操作人员应&&
而不是||
。
您可以通过尝试这些命令与此实验:
test -e testfile && echo "going to move the file"
test -e testfile || echo "going to move the file"
我发现没有人实际上已经回答了原来的问题本身呢,具体怎么忽略错误(所有问题的答案目前只调用命令而言,如果它不会造成一个错误)。
要真正忽略错误,你可以简单地做:
mv -f foo.o ../baz 2>/dev/null; true
这将stderr
输出重定向到null
,并按照命令true
(它总是返回0
,导致使相信不管命令成功的实际发生了什么),允许程序流程继续。
这是一个很好的。当然,如果有人想看到有关丢失文件的输出,也可以放弃“真实”部分并使用“ - ”。 – 2014-02-27 19:00:25
看什么altendky做:-mv foo.o将../baz – Malcolm 2013-04-02 18:21:56