You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins编写Pipeline脚本时如何将变量下划线替换为连字符

问题原因

你当前写法TEMPVAR为空有两个核心错误:

  • 直接使用管道|无法将命令执行结果赋值给变量,shell中捕获命令输出需要用$(命令)的命令替换语法
  • 变量$VAR本身不会主动将值输出到标准输入流传递给tr命令,需要搭配echo/printf输出内容

正确实现

该需求完全可以实现,两种常用实现方案如下:

方案1:使用tr命令(兼容所有POSIX shell)

不需要依赖特定shell环境,通用性最强:

void someFun(){
sh '''
VAR='a_b_c_d'
# 用$()捕获echo + tr的执行结果赋值给TEMPVAR
TEMPVAR=$(echo "$VAR" | tr '_' '-')
echo "With hyphens $TEMPVAR-blah-blah"
echo "With underscores $VAR"
'''
}

stage('测试变量替换'){
    someFun()
}

方案2:使用bash参数扩展(更高效)

如果Jenkins agent运行环境支持bash,直接用原生参数替换语法性能更好,无需额外调用外部进程:

void someFun(){
sh '''#!/bin/bash
VAR='a_b_c_d'
# 语法 ${变量//旧字符串/新字符串} 代表全局替换所有匹配项
TEMPVAR=${VAR//_/-}
echo "With hyphens $TEMPVAR-blah-blah"
echo "With underscores $VAR"
'''
}

stage('测试变量替换'){
    someFun()
}

两种方案都不会修改原VAR的值,替换后的结果会持久存储在TEMPVAR中可后续复用。

内容的提问来源于stack exchange,提问作者curious_coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:12:01