在groovy

时间:2017-03-31 09:50:52

标签: shell groovy jenkins-pipeline

非常新的groovy,我有非常简单的groovy代码,运行得非常好:

      sh """
          git checkout deploy
          git pull
          git branch
      """
      PREVIOS_VERSION = sh ( script: 'cat ' + VERSION_FILE + ' | grep current_version | awk -F\'[" "]\' \'{print $3}\'', returnStdout: true).trim()
      echo PREVIOS_VERSION
      sh "bumpversion ${SEMANTIC_VERSION_COMPONENT} --config-file ${VERSION_FILE} --verbose"
      NEW_VERSION = sh ( script: 'cat ' + VERSION_FILE + ' | grep current_version | awk -F\'[" "]\' \'{print $3}\'', returnStdout: true).trim()
      echo NEW_VERSION
      sh """
          git checkout ${GIT_BRANCH}
          git branch
      """

当我将此代码组合成一个sh命令时,如下所示:

      sh """
          git checkout deploy
          git pull
          git branch
          PREVIOS_VERSION = ( script: 'cat ' + VERSION_FILE + ' | grep current_version | awk -F\'[" "]\' \'{print $3}\'', returnStdout: true).trim()
          echo PREVIOS_VERSION
          bumpversion \${SEMANTIC_VERSION_COMPONENT} --config-file \${VERSION_FILE} --verbose
          NEW_VERSION = ( script: 'cat ' + VERSION_FILE + ' | grep current_version | awk -F\'[" "]\' \'{print $3}\'', returnStdout: true).trim()
          echo NEW_VERSION
          git checkout ${GIT_BRANCH}
          git branch
      """

然后我收到了这个错误:

WorkflowScript: 58: illegal string body character after dollar sign;
   solution: either escape a literal dollar sign "\$5" or bracket the value expression "${5}" @ line 58, column 7.
         sh """

即使我尝试使用\字符,但仍然没有运气。有人能告诉我如何才能达到最终结果。

1 个答案:

答案 0 :(得分:-1)

你需要在每一行的末尾添加\ n:

sh“git checkout deploy \ n”+    “git pull \ n”+    “git branch \ n”

抱歉我的错误,我只是理解了这个问题。

你不能以你想要的方式去做。 当你使用这条线时: PREVIOS_VERSION = sh(脚本:'cat'+ VERSION_FILE +'| grep current_version | awk -F \'[“”] \'\'{print $ 3} \'',returnStdout:true).trim()

它是一个调用shell命令的groovy语法。 你不能将它插入shell中,因为shell不会理解语法