2016-09-29 28 views
0

私は以下のbashスクリプトを持っています。grep regexに基づいてbashスクリプトを作成するにはどうしたらいいですか?

私が解決しようとする問題は、本当に簡単です。 Git noのコミットがgh-1234 ...で始まる場合、失敗するはずです。

このbashスクリプトで何が問題になっていますか?

commit_regex='(gh-[0-9]+|merge)' 

error_msg="Aborting commit. Your commit message is missing either a Github Issue ('gh-1111') or 'Merge'." 

if ! grep -q "$commit_regex" <<< "$1"; then 
    echo "$error_msg" >&2 
    exit 1 
fi 
+2

あなたは 'grep -E'を望むと思いますか? – psmears

答えて

1

コメントで述べたように、あなたはman grep PAGE-

-Eからgrep -E "$commit_regex"

を行う必要があり、--extended- は拡張正規表現(EREとしてパターンを解釈します、 下記参照)。 (-EはPOSIXで指定されています)

これは、grepに変数を強制的に拡張させるので、問題を解決するはずです。また

if [[ $git_message=~ $commit_regex ]] 
then 
    echo "$error_msg" 
    exit 1; 
fi 

0

はまた別の方法は、grepをせずに同じことを達成するために、「GH-1234」、それをコミットした場合、メッセージの先頭になるように義務付けられている、あなたは正規表現で^を追加する必要があります。

+0

Oですが、私は正規表現$ error_msgを再度チェックしたくありません。私はgitコミットをチェックしたいと思います –

+0

もちろん、コミットには 'gh-1234'の形式の文字列がある場合でもgit commitに対して動作します。私はちょうどその例としてerror_msgをとりました"gh-1111"エントリ。 – Rambler

関連する問題