make
在尝试zip -u
某些文件后暂停并报告错误代码为12 .
错误代码12实际上是zip的退出状态,表示它"无所事事".
我不明白为什么这是一个非零退出状态.让zip安静地什么都不做是不是更合适?如果zip无关,它似乎不是一个实际问题.
我可以压制它:告诉make
通过调用忽略zip的非零退出状态-zip -u
.但这种方法的问题是12是我想忽略的唯一退出状态.所有其他人都表示会导致我想要中止的实际问题make
.
也许我可以设置一个等于输出的变量echo $?
,然后测试0或12但是zip
在.mk文件中的每个语句之后执行此操作似乎很明显.
有一种优雅的方式来处理这个问题吗?
错误...作为一个快速而肮脏的解决方案,您可以使用shell包装器:
#!/bin/ksh
zip "$@"
rc=$?
if [[ rc -eq 12 ]]; then
exit 0
fi
exit $rc
Run Code Online (Sandbox Code Playgroud)
或者,您可以在Makefile中执行几乎相同的内联,但它看起来有点难看(必须是带有重复$
标记等的shell单行程)