9

make尝试zip -u某些文件后正在停止并报告错误代码 12。

错误代码 12 实际上是 zip 的退出状态,表示它“无事可做”。

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

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

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

有没有一种优雅的方法来处理这个?

4

1 回答 1

6

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

#!/bin/ksh

zip "$@"
rc=$?

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

exit $rc

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

于 2013-10-08T21:06:49.673 回答