检测Bash“导出”值的失败

时间:2008-10-29 17:36:36

标签: bash scripting

在Bash中我正在执行一个命令并将结果放在这样的变量中:

export var=`svn ls`

但是如果SVN由于某种原因失败 - 比如它返回一个非零错误代码 - 导出仍然返回状态代码0.如何检测执行的命令是否失败?

4 个答案:

答案 0 :(得分:6)

var=`svn ls`
if [[ $? == 0 ]]
then
        export var
else
        unset var
fi

$?是最后执行的命令的退出代码,此处为svn ls

jmohr的解决方案简短而且甜美。温和地适应,

var=`svn ls` && export var || unset var

大致相当于上述(有效标识符的export永远不会失败,除非你做了一些可怕的事情并且耗尽了环境空间)。随心所欲 - 我使用unset只是为了避免$var可能有值,即使它没有被导出。

答案 1 :(得分:3)

var=`svn ls` && export var

答案 2 :(得分:1)

我有类似的问题,可以这样做:

rm -f error_marker_file
export var=`svn ls || touch error_marker_file`

[ -f error_marker_file ] && echo "error in executing svn ls"

答案 3 :(得分:-1)

export FOO=$(your-command) || echo "your-command failed"