Shell Jenkins文件中意外标记“(';附近出现语法错误

Shell Jenkins文件中意外标记“(';附近出现语法错误,shell,groovy,jenkins-pipeline,Shell,Groovy,Jenkins Pipeline,我的文件如下: pipeline { agent any stages { stage('Checkout Source') { steps { echo '====stage 1: SCM Poll Stage====' checkout scm } } stage('build') {

我的文件如下:

    pipeline {
    agent any

    stages {

        stage('Checkout Source') {
            steps {
                echo '====stage 1: SCM Poll Stage===='
                checkout scm
            }
        }

        stage('build') {
            steps {
                sh 'mvn --version'
                sh 'mvn compile -f tools/pom.xml -Dlogin.user=ABC -Dlogin.password=ENC(123+w)'
            }
        }
    }
}
我在ENC(123+w)附近遇到一个错误

控制台输出中的错误为

/var/lib/jenkins/workspace/firstPipeline_feature_Ticket-1@tmp/durable-2b07c016/script.sh: line 1: syntax error near unexpected token `('
我想知道我们是否不能在sh命令行中使用括号“。我们应该如何转义这个特殊字符?

您应该使用
进行shell脚本调用,并将参数作为字符串提供,以便您应该使用
。如下所示:

sh''mvn compile-f tools/pom.xml-Dlogin.user=ABC“-Dlogin.password=ENC(123+w)”“”“
您应该使用
进行shell脚本调用,并将参数作为字符串提供,以便您应该使用
。如下所示:


sh''mvn compile-f tools/pom.xml-Dlogin.user=ABC“-Dlogin.password=ENC(123+w)”''
这可能是原因之一 如果Jenkins管道项目名称中包含大括号 如->项目管道(开发) 如果您有任何shell命令,并且在使用项目名称的Jenkins中,您可能会看到此错误。
sh(脚本:“cd${projectpipeline(develope)}”,returnStatus:true)

这可能是原因之一 如果Jenkins
管道项目名称中包含大括号 如->项目管道(开发) 如果您有任何shell命令,并且在使用项目名称的Jenkins中,您可能会看到此错误。
sh(脚本:“cd${projectpipeline(develope)}”,returnStatus:true)

我认为单引号和双引号有区别,三引号只允许多行字符串。而且三引号可以允许以字符串形式给出命令参数。我认为,如果提问者以字符串形式给出参数,这将解决语法错误。说什么?命令参数以字符串形式给出?我不同意现在。您在谈论哪一个级别?在groovy/jenkins或shell中执行的上下文中?您不需要
'
'
就足够了。我的意思是在这种情况下:
“-Dlogin.password=ENC(123+w)”
我明白你的意思。但括号中的某些内容表示run is sub shell is shell script。但在这种情况下,提问者不想运行任何东西。Mvn命令应该将PSW参数读取为字符串,这意味着应该使用引号。我认为单引号和双引号之间存在差异,而三引号只允许多行字符串。此外,三重引号可以允许以字符串形式给出命令的参数。我认为,如果提问者以字符串形式给出参数,这将解决语法错误。说什么?命令的参数以字符串形式给出?我不懂。你说的是哪一级?在groovy/jenkins上下文中还是在shell中执行?你不需要
就足够了。我的意思是在这种情况下:
“-Dlogin.password=ENC(123+w)”
我明白你的意思。但括号中的某些内容表示run is sub shell is shell脚本。但在这种情况下,提问者不想运行任何东西。Mvn命令应该将PSW参数读取为字符串,这意味着应该使用引号。我通过管道验证程序运行了你在问题中输入的代码,结果没有语法错误rors.shell中的问题。我相信您只需引用参数。使用普通shell执行您的命令…我通过管道验证程序运行了您在问题中输入的代码,结果没有语法错误。shell中的问题。我相信您只需引用参数。使用普通shell执行您的命令。。。