如果Jenkinsfile中的语句,则比较字符串不起作用

时间:2019-06-08 23:34:38

标签: shell jenkins groovy

我试图根据星期几在Jenkinsfile中添加一个“验证”阶段。如果今天是星期天,则需要验证,否则不需要验证。

if语句不起作用

在这里我声明变量

DAY=sh(returnStdout: true, script: 'date +"%a"').trim()

这是舞台

stage('validation') {
  steps {
    script {
      if ( DAY == "SUN" ) {
        echo "Validation is required, today is $DAY"
      }
      else {
        echo "No validation required, today is $DAY"
      }
    }
  }
}

这是输出

No validation required, today is Sun

变量Day的值正确,但是if语句不能正常工作

预先感谢

2 个答案:

答案 0 :(得分:1)

由于DAY中单词的大小写不同,因此似乎比较失败。 试试这个

      if ( DAY == "Sun" ) {
        echo "Validation is required, today is $DAY"
      }
      else {
        echo "No validation required, today is $DAY"
      }

答案 1 :(得分:0)

要确保比较的另一种方法至少是将结果转换为大写形式。这样,您的测试将保持不变。

请确保为date +"%a"使用force an English output
(在我的法语设置中,我得到的是“ dim.”,而不是“ Sun”)

DAY=sh(returnStdout: true, script: 'LANG=en_us_88591 date +"%a"').trim().toUpperCase().replaceAll('.','')

这样,您的Jenkinsfile便可以在任何工作站上运行,无论其locale