在Bash中我正在执行一个命令并将结果放在一个变量中:
export var=`svn ls`
但是如果SVN由于某种原因失败 - 比如它返回一个非零错误代码 - 导出仍然返回状态代码0.如何检测执行的命令是否失败?
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
可能有一个值,即使它没有被导出.