Bash 使“unzip”尝试解压缩文件(如果存在),如果没有,则不会失败
如何使解压忽略未找到的文件 当我运行Bash 使“unzip”尝试解压缩文件(如果存在),如果没有,则不会失败,bash,shell,unix,Bash,Shell,Unix,如何使解压忽略未找到的文件 当我运行unzip myArchive.zip config/*并且config/*与存档中的任何文件都不匹配时,我得到了一个返回代码11 如果文件存在,是否可以进行解压尝试解压而不失败? 如果是,怎么做 我在解压手册中找不到任何选项将其转换为“如果失败,请闭嘴,兄弟!”模式 当然,我可以做一些类似于解压myArchive.zip config/*| true的事情,但对我来说,它看起来真的很难看 谢谢你的帮助 编辑:已将其标识为重复。可能是。另一个答案非常有用,但要
unzip myArchive.zip config/*
并且config/*
与存档中的任何文件都不匹配时,我得到了一个返回代码11
如果文件存在,是否可以进行解压
尝试解压而不失败?
如果是,怎么做
我在解压手册中找不到任何选项将其转换为“如果失败,请闭嘴,兄弟!”模式
当然,我可以做一些类似于解压myArchive.zip config/*| true
的事情,但对我来说,它看起来真的很难看
谢谢你的帮助
编辑:已将其标识为重复。可能是。另一个答案非常有用,但要使命令忽略所有错误。我期望有一个选项/技巧,简单地跳过未找到的文件,并让命令在其他错误情况下继续失败(例如,如果存档不存在) 删除错误消息、错误退出代码和任何消息:
unzip -qq myArchive.zip config/* 2> /dev/null || true
由于此退出状态仅限于此单一错误情况,您可以:
unzip myArchive.zip config/* || \
( e=$? && if [ $e -ne 11 ]; then exit $e; fi )
修改后的问题(静默特定错误消息和退出代码)的可能重复项比建议的重复项更一般、更有趣。该回答解决了OP的原始Q,但没有回答OP的修改Q,这更难:仅消除特定错误的结果,在保留所有其他错误的同时,这似乎是可行的,但并不能消除发送到STDOUT和STDERR的文本警告。(以特定的方式这样做似乎很麻烦,可以
grep-v
查找可能的错误字符串,但可能没有任何通用的解决方案。)你是对的。我可以提出另一种基于临时文件的解决方案来记录输出,有选择地打印和/或删除,但恐怕这会有点过火。让我们保持简单。特别是对于像zip/unzip
这样的老狗。我不关心输出,返回码才是真正的问题。无论如何,这是一种优雅的方法。我终于用-t“测试”了文件夹的解压,用“grep OK”获得了当前文件列表,并在第二次解压。它工作,但我可能会改变它为您的解决方案。。。谢谢