pngcheck几乎是完美的。但是pngcheck以最简单的形式输出以OK:ERROR:开头的行。这意味着我必须解析一个输出字符串,而我宁愿只检查一个返回值。

我查看了pngcheck.c源代码,对PNG有效性进行彻底检查是一件很艰辛的事情-不仅是魔术数字检查。因此,目前我能做的最好的事情就是创建一个简单的pngcheck.sh,它调用pngcheck并解析输出字符串,然后依次解析exit 0exit 1

但是我想检查是否有一个简单的或更多的“时尚”解决方案。

谢谢!

最佳答案

当我查看pngcheck.c的源代码(PNGcheck,2007年7月7日的版本2.3.0)时,我相信它确实设置了返回代码。在main()的末尾附近:

717   if (num_errors > 0)
718     err = (num_errors > 127)? 127 : (num_errors < 2)? 2 : num_errors;
719   else if (num_warnings > 0)
720     err = 1;
...

num_errors是失败的文件数,num_warnings是有警告的文件数。然后它以“return err;”退出。

因此,所有正常的返回码为0,仅警告为1,失败的文件数为2或更高(最大值127)。

这也与我对Ubuntu上安装的二进制文件所做的小型测试一致。
pngcheck -q /etc/profile >/dev/null; echo $?    # returns 2
pngcheck -q cpu50.png >/dev/null;  echo $?      # returns 0

关于linux - 用于bash/linux的简单一线工具,以检查PNG是否有效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35093559/

10-11 07:35