从管道中的 git 提交消息中删除特殊字符

Remove special characters from git commit messages in pipeline

我正在写詹金斯管道 我需要获取提交消息并从此消息中删除文件名

的非法符号
    stages {
       stage('Get_commit_msg') {
           steps {
               script {
                   git_commit_msg= sh (script: 'git log -1 --pretty=%B ${GIT_COMMIT}', returnStdout: true).trim()

               }
           }
        }
       stage ('3 - Database backup') {
            steps {
                script {
                    sshPublisher(
                        continueOnError: false, failOnError: true,
                            publishers: [
                                sshPublisherDesc(
                                    configName: "${env.SSH_CONFIG_NAME}",
                                    verbose: true,
                                    transfers: [
                                        sshTransfer(
                                            sourceFiles: "",
                                            removePrefix: "",
                                            remoteDirectory: "",
                                            execTimeout: "1200000",
                                            execCommand:
                                            """
                                            sudo mysqldump -u ${env.DATABASE_USER} ${env.DATABASE_NAME} --result-file=before_${git_commit_msg}_${env.DATE}.sql
                                            """
                                        )
                                    ]
                                )
                            ]
                    )
                }
            }
       }
    }

我有一个错误

bash: -c: 第 1 行:意外标记附近的语法错误 (' bash: -c: line 1: sudo mysqldump -u root timesheets --result-file=before_Th (is) i#s t$e%st m^&*e{}[]ss!age_$(date '+%F').sql' SSH:执行:401 毫秒后完成

如果我用

            steps {
                script {
                    sh "git_commit_msg=echo $git_commit_msg | tr -d '[:cntrl:]'"
                }
            }
       }```

get error

/var/jenkins_home/workspace/pipeline@tmp/durable-aded948a/script.sh: line 1: syntax error: unexpected "("

please help

tr 可以帮助您用占位符替换所有非字母数字字符:

git_commit_msg = sh(
    script: 'git log -1 --pretty=%B ${GIT_COMMIT} | tr -c "[[:alnum:]]" @', 
    returnStdout: true
).trim()

您可以根据自己的需要进行调整:

TR(1)

NAME
       tr - translate or delete characters

SYNOPSIS
       tr [OPTION]... SET1 [SET2]

DESCRIPTION
       Translate, squeeze, and/or delete characters from standard input, writing to standard output.

       -c, -C, --complement
              use the complement of SET1
...
       [:alnum:]
              all letters and digits
...