我想在bash上运行一个显示if [[ $(git status -s) ]]; then git status; fi
输出的命令,但前提是有趣的东西。换句话说:如果一切都很好,我不希望命令打印任何东西。基本上我可以通过运行来实现这一点:
-s
这里的诀窍是0
标志只输出任何有趣的东西,所以它完全符合我的要求: - )
唯一的缺点是,如果我在不是git目录的目录中运行它,我不会得到不等于git status
的退出代码。如果我直接运行git status -s
或128
,则两者都会以退出代码if
失败。但是,只要我在0
内执行此操作,退出代码为db.collection.aggregate(
{ $group : {
_id : { "category" : "$category", "type" : "$type" },
number : { $sum : 1 }
} },
{ $group : {
_id : "$_id.category",
number : { $sum : 1 }
} }
)
。
如何增强我的脚本以便转发退出代码?
答案 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; }