检测Bash"导出"值的失败

Ada*_*nst 4 bash scripting

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

export var=`svn ls`

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

eph*_*ent 7

var=`svn ls`
if [[ $? == 0 ]]
then
        export var
else
        unset var
fi
Run Code Online (Sandbox Code Playgroud)

$?是执行的最后一个命令的退出代码,就svn ls在这里.

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

var=`svn ls` && export var || unset var
Run Code Online (Sandbox Code Playgroud)

将大致相当于上述(export有效的标识符永远不会失败,除非你做了一些可怕的事情并且耗尽了环境空间).拿你想要的任何东西 - 我unset只是为了避免$var可能有一个值,即使它没有被导出.