这个脚本做什么?

时间:2011-05-16 22:05:47

标签: bash scripting dependencies makefile

我正在查看教程“高级自动依赖关系生成”,并找到了一个脚本:

 %.P : %.c
   ....; [ -s $@ ] || rm -f $@

目标的那部分是做什么的?我知道我见过这种语法: 在bash脚本之前[...]||...,但我不记得它是如何工作的......

提前致谢!!

2 个答案:

答案 0 :(得分:2)

如果前面的命令失败(即[),则执行以下命令(rm)。失败是非零返回码。

答案 1 :(得分:2)

测试[ -s $@ ]测试非空文件。

  • 如果文件不为空,请不要将其删除。
  • 如果文件为空,请删除(空)文件。

序列[ -s $@ ] || rm -f $@因此删除当前目标文件($@表示法中的make),如果它是空文件。

这是shell和make符号的有趣组合。 $@部分是正在构建的目标的make符号。 (它也是shell脚本的完整参数列表的shell表示法,但在此上下文中,make表示法优先于shell表示法 - shell不会看到$@。)