“!-f”在make文件中的含义是什么?

时间:2014-11-04 09:26:17

标签: makefile linux-kernel

我不了解下面的make file命令行。什么" [! -f"代表什么?

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

1 个答案:

答案 0 :(得分:1)

您已经从文档中找到了

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

测试该文件不存在,并且您已经知道

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

复制文件。因此,[ ! -f ... ] || cp ...仅在文件存在时复制文件:它可以读作"文件不存在,否则文件将被复制"。

通常你可以把它写成

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

但是,如果文件不存在,则会以非零状态代码退出:仅当文件存在且成功复制时,状态代码才为零。这里的目标是不将文件不存在视为错误条件,因此必须反转逻辑。