2014-11-04 47 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

相关问题