我不了解下面的make file命令行。什么" [! -f"代表什么?
[ ! -f $(KERNEL_OUT)/drivers/eu.ko ] || \
cp $(KERNEL_OUT)/drivers/eu.ko $(TARGET_OUT)/lib/
答案 0 :(得分:1)
您已经从文档中找到了
[ ! -f $(KERNEL_OUT)/drivers/eu.ko ]
测试该文件不存在,并且您已经知道
cp $(KERNEL_OUT)/drivers/eu.ko $(TARGET_OUT)/lib/
复制文件。因此,[ ! -f ... ] || cp ...
仅在文件存在时复制文件:它可以读作"文件不存在,否则文件将被复制"。
通常你可以把它写成
[ -f ... ] && cp ...
但是,如果文件不存在,则会以非零状态代码退出:仅当文件存在且成功复制时,状态代码才为零。这里的目标是不将文件不存在视为错误条件,因此必须反转逻辑。