【问题标题】:mvn in bash script if statementbash脚本中的mvn if语句
【发布时间】:2012-11-19 01:23:15
【问题描述】:

我想在 bash 脚本中运行命令 mvn clean。但我想把它放在一个 if 语句中。如果清理无法正常运行,我想使用 echo 语句退出 bash 脚本。 这是导致问题的代码: 如果 [ mvn 清洁 ];那么

我尝试将 $(mvn clean) 放在 if 语句中,但终端表示参数太多。有谁知道这是否可能?谢谢!

【问题讨论】:

    标签: bash maven


    【解决方案1】:

    这就是你想要的:

    mvn clean
    if [ "$?" -ne 0 ]; then
        echo "Maven Clean Unsuccessful!"
        exit 1
    fi
    

    说明:

    • $? 是一个 special shell variable,其中包含最近执行的命令的退出代码(无论它是否成功终止)。
    • -netest builtin [ 的一个选项。它代表“不相等”。因此,我们在这里测试mvn clean 的退出代码是否不等于零。
    • echo "Maven Clean Unsucccessful!" - 如果是这种情况,那么我们会输出一些指示性消息,并使用错误的退出代码退出脚本本身。

    当您执行$(mvn clean) 时,它会生成一个新的子shell 来运行mvn clean,然后简单地将输出到该子shell 中stdout 的所有内容从运行mvn clean 转储到在$(...) 中使用的位置父壳。


    或者,您可以这样做:

    mvn clean || { echo "Maven Clean Unsuccessful"; exit 1; }
    

    这只是做同样事情的简写语法糖。

    【讨论】:

    • 我有点担心你的最后一种方法:mvn clean || echo "Maven Clean Unsucccessful!" && exit 1。我尽量避免||&& 的链。在您的情况下,如果 echo 失败,那么 exit 1 将永远不会被执行。这什么时候会发生?哦,我几乎从不同意,但它可以。例如,在像 exec 1>&- 一样关闭标准输出之后。无论如何,这个问题的正确答案是 choroba 给出的答案。
    • @gniourf_gniourf 我之前写的速记实际上是错误的,哈哈 =p 看起来我的编辑在你的评论登陆前几秒钟就完成了 - 请参阅更新的答案。
    • 你一定是在开玩笑! mvn clean || {echo "Maven Clean Unsucccessful!"; exit 1} 错误百出!对echo 'Maven Clean Unsuccesssful!' 使用单引号或转义!(并删除三重s);此外,{echo 不是命令(您必须在{ 和命令之间留一个空格),并且您必须在结束 } 之前的最后一条语句处放置一个分号。
    • @gniourf_gniourf: 谢谢=) 第一次实际使用{...},没有意识到其中的微妙之处。
    • @gniourf_gniourf 必须在双引号中转义 ! 对我来说也是新鲜事。
    【解决方案2】:

    检查退出状态不需要括号:

    if mvn clean ; then
       echo ok
    else
       echo Something went wrong.
       exit 1
    fi
    

    【讨论】:

      【解决方案3】:

      我更喜欢使用变量来捕获返回码。提高可读性并允许运行其他命令而不必担心破坏返回码值:

      mvn clean
      
      MVN_RTN=$?
      if [ "${MVN_RTN}" -ne 0 ]; then
         echo "Maven returned failure code ${MVN_RTN}"
         exit 1
      fi
      

      【讨论】:

        猜你喜欢
        • 2014-05-26
        • 2019-08-15
        • 1970-01-01
        • 2019-03-08
        • 2017-01-15
        • 2015-05-31
        • 1970-01-01
        • 2014-01-30
        • 2017-08-10
        相关资源
        最近更新 更多