如何检查if / else

时间:2017-09-22 13:31:54

标签: git bash if-statement

如何检查我的GIT仓库中是否存在标签。 我得到一些标记名作为输入,我必须检查它是否是if else statement.的有效标记 TAG = “标记名”

我试过了:

if [ git rev-parse ${TAG} >/dev/null 2>&1 ]; then
  echo "tag exists";
else
  echo "tag does not exist";

但它不起作用

2 个答案:

答案 0 :(得分:3)

您可以将if与不带test的命令(或同义词[)一起使用,if命令会将退出状态视为条件。如果它退出并且成功" (即0)然后它是真的,否则它是假的:

if git rev-parse "$TAG" >/dev/null 2>&1; then
  echo "tag exists";
else
  echo "tag does not exist"
fi

答案 1 :(得分:0)

更简单、更清洁的解决方案

if git show-ref --tags tag1 --quiet; then
  echo "tag exists"
else 
  echo "tag doesn't exist or error in command"
fi
如果未找到标签,

git show-ref 以退出代码 1 退出(请参阅 Git code,没有找到它的文档)。 不过,还有其他 if 结构可以检查退出代码(参见例如 this question)。

git rev-parse 限制为仅标记

git rev-parse --tags=$TAG 仅查找标签(= 是必需的),而 git rev-parse $REF 查找所有类型的 revisions(即还有分支和 SHA)。