如何将 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
我是新手 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