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

时间:2017-10-12 08:49:28

标签: linux unzip exit-code

我有一个zip文件,它在Windows服务器上压缩并具有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与存档中的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

知道unzip命令中返回码1的原因是什么?

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

2 个答案:

答案 0 :(得分:1)

如果已跳过任何文件,请使用-v选项

返回值为1

的解压缩状态的man页面
  

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

答案 1 :(得分:1)

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

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

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