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

时间:2013-10-08 15:51:59

标签: unix makefile zip

在尝试make某些文件后,

zip -u暂停并报告错误代码为12。

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

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

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

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

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

1 个答案:

答案 0 :(得分:5)

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

#!/bin/ksh

zip "$@"
rc=$?

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

exit $rc

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