1

有时,我们会从供应商处收到看似已损坏的 ZIP 文件。尝试列出 ZIP 的内容将触发如下错误:

    $>unzip -qql JABL_VER_20120808_165910.zip
unzip:  cannot find or open JABL_VER_20120808_165910.zip, JABL_VER_20120808_165910.zip.zip or JABL_VER_20120808_165910.zip.ZIP.

我快速阅读了 unzip 手册页并对该片段进行了编码以捕获上述错误

EXIT=`echo $?`
case $EXIT in
> 0-1) echo "Unzip Complete.";;
> *) echo "Unzip Failed.";;
> esac
$>Unzip Failed.

它似乎工作。但是,在某些情况下,错误是不同的:

$>unzip -qql JABL_VER_20120808_175915.zip
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of JABL_VER_20120808_175915.zip or
        JABL_VER_20120808_175915.zip.zip, and cannot find JABL_VER_20120808_175915.zip.ZIP, period.

是否有一种“万无一失”的方法来捕获此类错误?

PS:不确定是否重要,但 ZIP 文件是在 MS Windows 上生成的;我们使用红帽。

4

1 回答 1

1

退出代码 1 也不好,1 遇到一个或多个警告错误,但无论如何处理成功完成。这包括由于不支持的压缩方法或使用未知密码加密而跳过一个或多个文件的 zipfile。

你应该试试

   unzip -t zipfilename

并且只接受退出代码 0

为什么你有这么多错误?ftp'd 文本模式的文件?

于 2012-08-09T02:53:36.953 回答