如何将 gunzip 操作的状态捕获到变量中?

How to capture the status of a gunzip operation into a variable?

我是新手 shell scripting.I 一开始有一个解压操作 然后按照顺序 steps.I 想移动到这些步骤 只有 gunzip操作成功。

为此,我现在有一个非常简单的脚本

#!/bin/bash
set -x -e
x=$(gunzip myfile.dat.gz)
echo "X is " $x

输出是

-bash-3.2$ ./unzipper.sh
++ gunzip myfile.dat.gz
+ x=
+ echo 'X is '
X is

我期望 x 有一个 0/​​非零状态代码,并且基于此我想使用 if 条件来继续下一个。 这看起来不正确。

你能帮我看看怎么做吗?

很可能您想做的是:

#!/bin/bash
if gunzip myfile.dat.gz; then
# What you want to do on success goes here
fi

至少,这是最简单的解决方案。 set -e 有很多微妙的结果;不推荐。

如果你真的想保存gunzip的状态码,可以在命令后立即使用$?

#!/bin/bash
gunzip myfile.dat.gz
gunzip_status=$?
# Do some stuff whether or not gunzip succeeded
if ((gunzip_status==0)); then
  # Do some stuff only if gunzip succeeded
else
  # Do some stuff only if gunzip failed
fi
# What you want to do on success goes here
fi