【问题标题】:unzip is returning exit code 1 even if the extraction was successful即使提取成功,unzip 也会返回退出代码 1
【发布时间】:2023-05-18 16:55:01
【问题描述】:

我有一个在 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/…

标签: linux unzip exit-code


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      最近更新 更多