我正在製作一個將輸出文件(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