使用解压缩捕获错误?

时间:2012-08-08 23:43:24

标签: bash unzip

有时,我们会从供应商处收到看似已损坏的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.

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

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上生成的;我们使用Red Hat。

1 个答案:

答案 0 :(得分:1)

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

你应该试试

   unzip -t zipfilename

并且只接受退出代码0

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