代码之家  ›  专栏  ›  技术社区  ›  Amin Ba

如何在bash中从regex捕获?复制

  •  0
  • Amin Ba  · 技术社区  · 3 年前

    我正在运行这段代码,这样我就可以将分支名称与模式相匹配,并基于该模式创建端口:

    nano test.sh

    
    #!/usr/bin/env bash
    
    branch="3.2.1"
    
    re='([0-9]+)\.([0-9]+)\.([0-9]+)'
    
    if [[ $branch =~ "master" ]]; then
      port=3000
      echo $port
    elif [[ $branch =~ $re ]]; then
      port="300${BASH_REMATCH[0]}"
      echo $port
    else
      echo "no match found!"
    fi
    

    bash test.sh

    我在等 3003 但它正在回归 3.2.1

    1 回复  |  直到 3 年前
        1
  •  0
  •   Amin Ba    3 年前

    应该是 300${BASH_REMATCH[1]

    #!/usr/bin/env bash
    
    branch="3.2.1"
    
    re='([0-9]+)\.([0-9]+)\.([0-9]+)'
    
    if [[ $branch =~ "master" ]]; then
      port=3000
      echo $port
    elif [[ $branch =~ $re ]]; then
      port="300${BASH_REMATCH[1]}"
      echo $port
    else
      echo "no match found!"
    fi