2016-06-17 4 views
6

私はシェルスクリプト(bashで)が非常に悪いので、現在のgitブランチが "x"であるかどうかを確認する方法を探しています( ) "x"でなければスクリプト。現在のgitブランチが "x"であるかどうかをチェックするbashスクリプト

#!/usr/bin/env bash 

    CURRENT_BRANCH="$(git branch)" 
    if [[ "$CURRENT_BRANCH" -ne "master" ]]; then 
      echo "Aborting script because you are not on the master branch." 
      return;  # I need to abort here! 
    fi 

    echo "foo" 

が、これはかなり右

+2

あなたのコードは構文的に無効ですので、[shellcheck。 net](http://shellcheck.net)が最初の手段です。 – mklement0

答えて

16

git rev-parse --abbrev-ref HEADを使用して、現在のブランチの名前を取得します。

そして、それは単にあなたのスクリプトで値を比較の問題だ:

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

echo 'Do stuff'; 
+1

サイドノート: 'git rev-parse --abbrev-ref HEAD'は、HEADが現在デタッチされている場合の何かを戻す(エラーではない)場合の、この場合の正しい方法です。分離されたHEADの場合を区別するために、 'git symbolic-ref HEAD'を代わりに使用してください。 – torek

3

あなたはexit代わりのreturnを使用したくないです。

4

1つのオプションはgit branchコマンドの出力を解析するために、次のようになります。

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

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

しかし、gitのを使用していますバリアント@knittlで示唆されているようなアクティブなブランチ名を得るための内部コマンドは、エラーが起こりにくく、望ましいものではありません。

関連する問題