即使提取成功,unzip 也会返回退出代码 1

Posted

技术标签:

【中文标题】即使提取成功,unzip 也会返回退出代码 1【英文标题】:unzip is returning exit code 1 even if the extraction was successful 【发布时间】:2017-10-12 08:49:27 【问题描述】:

我有一个在 windows 服务器上压缩的 zip 文件,它具有 windows 目录结构。

我正在尝试使用以下命令在 ubuntu 服务器上解压缩文件:

/tmp/temp » unzip -d /tmp/temp/temp backup.zip  

解压缩工作正常,目录结构自动转换为基于 Linux 的目录结构。但由于某种原因,extract 命令的退出代码为 1,这搞乱了我的 Jenkins 工作,没有进一步进行。

  inflating: /tmp/temp/temp/fs/site/wwwroot/vendor-a2341eb904.js  
  inflating: /tmp/temp/temp/fs/site/wwwroot/vendor-fc433e18b6.css  
  inflating: /tmp/temp/temp/fs/site/wwwroot/web.config  
  inflating: /tmp/temp/temp/meta     
------------------------------------------------------------
/tmp/temp » echo $?                                                                                                                                                
1

我什至测试了存档以将提取文件的 CRC 与存档中的进行比较,似乎没问题:

    testing: fs\site\wwwroot\vendor-fc433e18b6.css   OK
    testing: fs\site\wwwroot\web.config   OK
    testing: meta                     OK
No errors detected in compressed data of backup.zip.
------------------------------------------------------------
/tmp/temp » echo $?                                                                                                                                               
0

知道解压缩命令中返回代码 1 的原因可能是什么吗?

顺便说一句:我还尝试在我的詹金斯工作中 set +e 忽略退出代码,但这没有任何帮助。

【问题讨论】:

退出代码的主要目的是能够在执行错误检查的脚本或外部程序中使用这些实用程序。我看不出这与编程和开发有何不同。 此链接提供了相关的解决方法:***.com/questions/38721876/… 【参考方案1】:

使用-v 选项检查是否有任何文件被跳过

man 页面用于解压缩状态,后面是返回值1

遇到一个或多个警告错误,但处理已完成 反正成功了。这包括包含一个或多个文件的 zipfile 由于不支持的压缩方法或加密而被跳过 未知密码。

【讨论】:

【参考方案2】:

如果您遇到此问题并且导致您的 shell 脚本突然结束而没有错误,请检查您的 shell 脚本文件顶部是否有 set -e 命令。

如果任何执行行抛出任何错误,Set -e 将结束您的脚本。

即使存在非严重警告且解压成功,在许多情况下解压退出并显示错误代码也是如此。

【讨论】:

以上是关于即使提取成功,unzip 也会返回退出代码 1的主要内容,如果未能解决你的问题,请参考以下文章

即使所有退出事件成功触发,Electron 应用程序也会挂起

QProcess.start 不返回退出状态或退出代码

即使登录被拒绝,SQL*Plus 也会以 0 退出

即使我退出设置的 GPS 位置并且每 2 或 1 分钟递归发生一次,接近警报也会触发

即使进程正在运行,Process.HasExited 也会返回 true?

Python Unittest Discover即使失败也返回退出代码0