2014-11-04 50 views
0

我不明白下面的make文件命令行。 「[!-f」代表什麼?「!-f」在make文件中的含義是什麼?

[ ! -f $(KERNEL_OUT)/drivers/eu.ko ] || \ 
    cp $(KERNEL_OUT)/drivers/eu.ko $(TARGET_OUT)/lib/ 
+1

Makefile中的命令是shell命令,並且(極少數例外情況下)不是專用於make的。在一個典型的系統上(我的意思是使用bash),你可以運行'help ['來簡單地提到它就像'test'命令一樣,'help test'以查找更多信息。 – hvd 2014-11-04 09:33:19

+0

謝謝,我知道,不知何故,我認爲它可能與有關使 – 2014-11-04 09:36:54

+0

[命令根據幫助條件評估條件,這條線仍然對我沒有意義 如果文件不存在或複製文件到blabla? – 2014-11-04 09:38:48

回答

1

你已經從文檔想通了,該文件不存在

[ ! -f $(KERNEL_OUT)/drivers/eu.ko ] 

測試,你已經知道

cp $(KERNEL_OUT)/drivers/eu.ko $(TARGET_OUT)/lib/ 

拷貝文件。因此,[ ! -f ... ] || cp ...只有在文件存在的情況下才會複製該文件:它可以被讀爲「文件不存在,否則文件將被複制」。

通常情況下,你就可以寫成:

[ -f ... ] && cp ... 

但是,如果文件不存在,這將與非零狀態碼退出:狀態代碼將是唯一的,如果文件存在零,是成功複製。這裏的目標是不將文件的不存在視爲錯誤條件,因此邏輯必須顛倒。

+0

感謝您的解答:) – 2014-11-04 14:53:11

相關問題