【问题标题】:how to parse commit message into variables using bash?如何使用 bash 将提交消息解析为变量?
【发布时间】:2020-06-11 05:36:39
【问题描述】:

我使用 bash 并且我有字符串(提交消息)

:sparkles: feat(xxx): this is a commit

我想把它分成变量部分:

emoji=:sparkles:
type=feat
scope=xxx
message=this is a commit

我尝试使用 grep,但正则表达式没有返回我需要的内容(例如“类型”),无论如何如何将其粘贴到变量中?

echo ":sparkles: feat(xxx): this is a commit" | grep "[((.*))]"

【问题讨论】:

    标签: regex bash string-parsing


    【解决方案1】:

    对于 bash 版本 >= 3,一个正则表达式和一个数组:

    x=":sparkles: feat(xxx): this is a commit"
    
    [[ "$x" =~ ^(:.*:)\ (.*)\((.*)\):\ (.*)$ ]]
    echo "${BASH_REMATCH[1]}"
    echo "${BASH_REMATCH[2]}"
    echo "${BASH_REMATCH[3]}"
    echo "${BASH_REMATCH[4]}"
    

    输出:

    :火花: 壮举 xxx 这是一个提交

    来自man bash

    BASH_REMATCH:一个数组变量,其成员由 =~ 二元运算符分配给 [[ 条件命令。元素 索引为 0 的字符串是匹配整个正则表达式的部分。索引为 n 的元素是 匹配第 n 个带括号的子表达式的字符串部分。这个变量是只读的。

    【讨论】:

      猜你喜欢
      • 2018-12-27
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-13
      相关资源
      最近更新 更多