gitlab ci bash 脚本变量修改

gitlab ci bash script variable modification

我想在 GitLab CI 脚本中

  1. 删除数字和点 (.) 以外的任何字符和
  2. 如果文本中存在点,则删除第二个点后的所有文本 [Ex 5.6.7.8 -> 5.6]。

为此我尝试使用 sed ,但它在 GitLab 脚本中不起作用(在本地处理 bash shell)

export BRANCH_NAME={$CI_COMMIT_REF_NAME} | sed 's/\.[^.]*$//'  | sed 's/[^0-9.]//g'

知道这里缺少什么吗?

如果 sed 在这里不起作用,那么还有其他方法可以实现同样的效果吗?

编辑: 根据@WiktorStribiżew -回声“$CI_COMMIT_REF_NAME” | sed 's/.[^.]$//' | sed 's/[^0-9.]//g' - 导出 BRANCH_NAME=${CI_COMMIT_REF_NAME} | sed 's/.[^.]$//' | sed 's/[^0-9.]//g'

echo 正在运行,但无法导出

首先,要删除第二个点之后(包括第二个点)之后的所有文本,您需要

sed 's/\([^.]*\.[^.]*\).*//'

sed 's/\.[^.]*$//' sed 命令删除 last 点及其后的所有文本。

接下来,您一定打错了,您实际上是想写 ${CI_COMMIT_REF_NAME} 而不是 {$CI_COMMIT_REF_NAME}

所以,

你可能会过得更好
export BRANCH_NAME=$(echo "$CI_COMMIT_REF_NAME" | sed 's/\([^.]*\.[^.]*\).*//' | sed 's/[^0-9.]//g')

使用sed

$ export BRANCH_NAME=$(echo "$CI_COMMIT_REF_NAME" |sed 's/[A-Za-z]*//g;s/\([0-9]*\.[0-9]*\)\.[^ ]*//g')