【问题标题】:Replace underscore with hyphen while writing script in Jenkins [duplicate]在Jenkins中编写脚本时用连字符替换下划线[重复]
【发布时间】:2021-10-28 17:02:34
【问题描述】:

我正在 Jenkins 中编写管道。我的代码如下所示:

void someFun(){
sh '''
VAR='a_b_c_d'
TEMPVAR=$VAR | tr '_' '-'
echo "With hyphens $TEMPVAR-blah-blah"
echo "With underscores $VAR"
'''
}

stage{
someFun()
}


我想要实现的只是一种替换第一个变量的下划线并在第二个变量中使用它的值的方法。还。我不打算改变 VAR。我想存储价值,而不仅仅是打印它。 当我使用上述方法时,我的 TEMPVAR 为空。

我试图实现的目标是可能的吗?如果是,实现它的方法是什么? 我阅读了多个帖子,但找不到任何有用的内容:(

【问题讨论】:

  • 您是尝试使用 replace 方法在 groovy 中实现,还是真的需要在 shell 中实现?
  • 使用 groovy 会降低性能,bad practice
  • 对于这样一件小事,我真的不得不恭敬地不同意。
  • @fmdaboville,我需要在 shell 中完成

标签: shell jenkins jenkins-pipeline jenkins-groovy


【解决方案1】:

您可以通过多种方式做到这一点,例如:

  • tr,但在这种情况下你需要使用额外的外壳:

    TEMPVAR="$(echo "$VAR" | tr _ -)"
    
  • 字符串替换甚至更好:

    TEMPVAR="${VAR//_/-}"
    

【讨论】:

  • 谢谢你,马可!这里只是一个愚蠢的问题。在第一种方法中,它是否还会在我们回显时打印 VAR 的值?
  • 不客气!不,输出是通过管道传输的,并保留在子外壳内。
  • @marco-luzzara,这确实值得解释为什么它没有按照 OP 在帖子中的预期工作,而不仅仅是“这是答案和替代方案。
猜你喜欢
  • 2021-06-24
  • 2018-05-20
  • 1970-01-01
  • 1970-01-01
  • 2020-09-05
  • 2014-06-05
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多