在bash中转发退出代码if

时间:2016-08-09 08:56:51

标签: git bash if-statement

我想在bash上运行一个显示if [[ $(git status -s) ]]; then git status; fi 输出的命令,但前提是有趣的东西。换句话说:如果一切都很好,我不希望命令打印任何东西。基本上我可以通过运行来实现这一点:

-s

这里的诀窍是0标志只输出任何有趣的东西,所以它完全符合我的要求: - )

唯一的缺点是,如果我在不是git目录的目录中运行它,我不会得到不等于git status的退出代码。如果我直接运行git status -s128,则两者都会以退出代码if失败。但是,只要我在0内执行此操作,退出代码为db.collection.aggregate( { $group : { _id : { "category" : "$category", "type" : "$type" }, number : { $sum : 1 } } }, { $group : { _id : "$_id.category", number : { $sum : 1 } } } )

如何增强我的脚本以便转发退出代码?

3 个答案:

答案 0 :(得分:1)

[[范围内执行退出状态检查:

if [[ -n $(git status -s 2>/dev/null) ]]; then git status; fi

答案 1 :(得分:1)

只需重定向到/ dev / null并检查输出是否为空:

[ -n "$(git status -s 2>/dev/null)" ] && git status

根据git status,当git status -s命令成功运行且输出不为空时,这将执行man test

   -n STRING
          the length of STRING is nonzero

答案 2 :(得分:1)

如果目录不在rev-parse

中,您可以使用git
git rev-parse 2>/dev/null && { git status -s || git status; }