我正在查看教程“高级自动依赖关系生成”,并找到了一个脚本:
%.P : %.c
....; [ -s $@ ] || rm -f $@
目标的那部分是做什么的?我知道我见过这种语法:
在bash脚本之前[...]||...
,但我不记得它是如何工作的......
提前致谢!!
答案 0 :(得分:2)
如果前面的命令失败(即[
),则执行以下命令(rm
)。失败是非零返回码。
答案 1 :(得分:2)
测试[ -s $@ ]
测试非空文件。
序列[ -s $@ ] || rm -f $@
因此删除当前目标文件($@
表示法中的make
),如果它是空文件。
这是shell和make
符号的有趣组合。 $@
部分是正在构建的目标的make
符号。 (它也是shell脚本的完整参数列表的shell表示法,但在此上下文中,make
表示法优先于shell表示法 - shell不会看到$@
。)