代码之家  ›  专栏  ›  技术社区  ›  Matt Sheppard

检测bash“export”值的失败

  •  3
  • Matt Sheppard  · 技术社区  · 16 年前

    在bash中,我执行一个命令,并将结果放入如下变量中:

    export var=`svn ls`

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

    4 回复  |  直到 16 年前
        1
  •  6
  •   ephemient    16 年前
    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 可能有一个值,即使它没有导出。

        2
  •  3
  •   jmohr    16 年前
    var=`svn ls` && export var
    
        3
  •  1
  •   Marko    16 年前

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

    rm -f error_marker_file
    export var=`svn ls || touch error_marker_file`
    
    [ -f error_marker_file ] && echo "error in executing svn ls"
    
        4
  •  -1
  •   Jeremy Cantrell    16 年前
    export FOO=$(your-command) || echo "your-command failed"