由于zip退出状态为12,因此中止

Sab*_*a S 7 unix zip makefile

make在尝试zip -u某些文件后暂停并报告错误代码为12 .

错误代码12实际上是zip的退出状态,表示它"无所事事".

我不明白为什么这是一个非零退出状态.让zip安静地什么都不做是不是更合适?如果zip无关,它似乎不是一个实际问题.

我可以压制它:告诉make通过调用忽略zip的非零退出状态-zip -u.但这种方法的问题是12是我想忽略的唯一退出状态.所有其他人都表示会导致我想要中止的实际问题make.

也许我可以设置一个等于输出的变量echo $?,然后测试0或12但是zip在.mk文件中的每个语句之后执行此操作似乎很明显.

有一种优雅的方式来处理这个问题吗?

Ale*_*off 5

错误...作为一个快速而肮脏的解决方案,您可以使用shell包装器:

#!/bin/ksh

zip "$@"
rc=$?

if [[ rc -eq 12 ]]; then
    exit 0
fi

exit $rc
Run Code Online (Sandbox Code Playgroud)

或者,您可以在Makefile中执行几乎相同的内联,但它看起来有点难看(必须是带有重复$标记等的shell单行程)