0
我不明白下面的make文件命令行。 “[!-f”代表什么?“!-f”在make文件中的含义是什么?
[ ! -f $(KERNEL_OUT)/drivers/eu.ko ] || \
cp $(KERNEL_OUT)/drivers/eu.ko $(TARGET_OUT)/lib/
我不明白下面的make文件命令行。 “[!-f”代表什么?“!-f”在make文件中的含义是什么?
[ ! -f $(KERNEL_OUT)/drivers/eu.ko ] || \
cp $(KERNEL_OUT)/drivers/eu.ko $(TARGET_OUT)/lib/
你已经从文档想通了,该文件不存在
[ ! -f $(KERNEL_OUT)/drivers/eu.ko ]
测试,你已经知道
cp $(KERNEL_OUT)/drivers/eu.ko $(TARGET_OUT)/lib/
拷贝文件。因此,[ ! -f ... ] || cp ...
只有在文件存在的情况下才会复制该文件:它可以被读为“文件不存在,否则文件将被复制”。
通常情况下,你就可以写成:
[ -f ... ] && cp ...
但是,如果文件不存在,这将与非零状态码退出:状态代码将是唯一的,如果文件存在零,是成功复制。这里的目标是不将文件的不存在视为错误条件,因此逻辑必须颠倒。
感谢您的解答:) – 2014-11-04 14:53:11
Makefile中的命令是shell命令,并且(极少数例外情况下)不是专用于make的。在一个典型的系统上(我的意思是使用bash),你可以运行'help ['来简单地提到它就像'test'命令一样,'help test'以查找更多信息。 – hvd 2014-11-04 09:33:19
谢谢,我知道,不知何故,我认为它可能与有关使 – 2014-11-04 09:36:54
[命令根据帮助条件评估条件,这条线仍然对我没有意义 如果文件不存在或复制文件到blabla? – 2014-11-04 09:38:48