gitlab ci bash 脚本变量修改
gitlab ci bash script variable modification
我想在 GitLab CI 脚本中
- 删除数字和点 (.) 以外的任何字符和
- 如果文本中存在点,则删除第二个点后的所有文本 [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')
我想在 GitLab CI 脚本中
- 删除数字和点 (.) 以外的任何字符和
- 如果文本中存在点,则删除第二个点后的所有文本 [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')