退出代码

退出代码

我正在尝试使用 7zip 通过 bash 脚本从一个大容器中提取单个文件。

命令:7za e archive.zip singlefilename

如果密码错误,7zip 会创建一个名为的空文件singlefilename,并且脚本会继续执行,但这并不是预期的。

如果 7za 密码错误,是否有任何开关可以重新询问密码?与 unzip 配合使用很顺畅 :/

答案1

退出代码

与...一样阿克塞尔的答案,但是(因为您提到了 bash)这里有一些 bash 代码可以帮助您入门:

#!/bin/bash
EXIT=1
while [ ! $EXIT -eq 0 ]
do
        # 7-zip stuff
        EXIT=$?
done

当大多数程序无任何错误完成时,它们将退出代码设置为0

测试非零退出代码通常是检测程序何时以某种方式失败的好方法。

答案2

每当你输入错误的密码时,都会向调用 shell7z返回一个非零值。ERRORLEVEL

这可用于在.cmd脚本中启动重试,如下所示:

:again
::   -y  allows overwrite of existing file
7z.exe e -y xxx.zip "xxx.txt"
if errorlevel 1 goto try_again
echo. got it!
goto xit

:try_again
echo. sorry! Try again ...
goto again

:xit

笔记:
独立版本7za不存在在所有安装中

相关内容