我正在嘗試使用正則運算式獲取分支名稱,然后在案例中使用它。
有誰知道它是如何作業的?
可能的名稱是:
- 發布/v1.1 -> 發布
- 大師 -> 大師
- 開發 -> 開發
BRANCH="release/v1.1";
#BRANCH="master";
#BRANCH="develop";
#branch_name=`expr "${BRANCH}" : '^\(release\)\/v[0-9]\.[0-9]$'`
branch_name=`expr "${BRANCH}" : '^\(master)|(release\)\/v[0-9]\.[0-9]$'`
echo $branch_name
uj5u.com熱心網友回復:
怎么樣cut?
| cut -f1 -d"/"
這使用斜杠作為分隔符,并且只顯示第一個條目:
Prompt> echo "master" | cut -f1 -d"/"
master
Prompt> echo "develop" | cut -f1 -d"/"
develop
Prompt> echo "release/v1.1 you can put whatever here :-)" | cut -f1 -d"/"
release
編輯:為了使用它分配給變數branch_name,這是你需要做的:
branch_name=$(echo $BRANCH | cut -f1 -d"/")
uj5u.com熱心網友回復:
您還可以使用 sed 并將每個替代方案放在它自己的組中
該部分((release)/v[0-9] (\.[0-9] )?匹配發布,后跟/1 位,可選地后跟.1 位。
在替換使用組 2 和組 4。
for BRANCH in release/v1.1 master develop; do
sed -E 's~^((release)/v[0-9] (\.[0-9] )?|(develop|master))$~\2\4~' <<< "$BRANCH"
done
輸出
release
master
develop
請參閱正則運算式組。
您還可以在 awk 中使用更短的模式版本,將欄位分隔符設定為/以及何時匹配列印欄位 1。
awk -F'/' '/^(release\/v[0-9] (\.[0-9] )?|develop|master)$/ {print $1}' <<< "$BRANCH"
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/432617.html
