我嘗試撰寫下一個正則運算式來檢查 husky 的 GIT 提交訊息
我的腳本:
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
message="$(cat $1)"
if ! [[ $message =~ ^\[.*?\] (resolved|fixed) \#([0-9])* ([A-Z])\w.*$ ]];
then
echo "?? Wrong commit message! ??"
echo "[POLICY] Your message is not formatted correctly!"
echo "Message format must be like:"
echo "[Tag] resolved #123 Case title (for features)"
echo "[Tag] fixed #123 Case title (for bugs)"
echo "First letter of 'Case title' must be capitalized!"
exit 1
fi
訊息應該通過: [Tag] 已解決 #123 案例標題(針對功能) [Tag] 已修復 #123 案例標題(針對錯誤)
發生錯誤:(
.husky/commit-msg: line 5: syntax error in conditional expression: unexpected token '`
uj5u.com熱心網友回復:
您可以使用將正則運算式定義為
rx='^\[[^][]*] (resolved|fixed) #[0-9]* [A-Z][[:alnum:]_].*'
然后,您可以使用
if ! [[ "$message" =~ $rx ]];
筆記:
- 在 POSIX ERE 正則運算式中,
*?不被決議為惰性量詞,因此[^][]*用于匹配除[and之外的任何零個或多個字符] \w沒有得到普遍支持,因此最好將其定義為[[:alnum:]_]- 將正則運算式宣告為單引號內的變數會更安全,以避免 Bash 在不帶引號的模式內進行特殊的字符擴展。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/524812.html
標籤:正则表达式重击沙哑
下一篇:Vim,退出當前檔案位置
