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