bash脚本检查当前git分支是否为;x";

bash脚本检查当前git分支是否为;x";,git,bash,shell,sh,Git,Bash,Shell,Sh,我非常不擅长shell脚本(使用bash),我正在寻找一种 检查当前git分支是否为“x”,如果不是“x”,则中止脚本 但这并不完全正确您想使用退出而不是返回获取当前分支的名称 然后,只需简单地比较脚本中的值: BRANCH="$(git rev-parse --abbrev-ref HEAD)" if [[ "$BRANCH" != "x" ]]; then echo 'Aborting script'; exit 1; fi

我非常不擅长shell脚本(使用bash),我正在寻找一种 检查当前git分支是否为“x”,如果不是“x”,则中止脚本


但这并不完全正确

您想使用
退出
而不是
返回

获取当前分支的名称

然后,只需简单地比较脚本中的值:

BRANCH="$(git rev-parse --abbrev-ref HEAD)"
if [[ "$BRANCH" != "x" ]]; then
  echo 'Aborting script';
  exit 1;
fi

echo 'Do stuff';

一个选项是解析
git分支的输出
命令:

BRANCH=$(git branch | sed -nr 's/\*\s(.*)/\1/p')

if [ -z $BRANCH ] || [ $BRANCH != "master" ]; then
    exit 1
fi

但是,使用git内部命令只获取@knittl建议的活动分支名称的变体不太容易出错,而且最好是

,因为您的代码在语法上是无效的,应该是您的第一个求助方法。旁注:
git rev parse--abbrev ref HEAD
是这种情况下的正确方法,您希望返回一些内容(而不是错误)用于判断当前是否分离了磁头。若要区分分离的磁头大小写,请改用
git symbolic ref HEAD
。作为一个线性行:
[[$(git rev parse--abbrev ref HEAD)=“master”]&&echo“on master”
BRANCH=$(git branch | sed -nr 's/\*\s(.*)/\1/p')

if [ -z $BRANCH ] || [ $BRANCH != "master" ]; then
    exit 1
fi