使用${params}在JSON文件中写入所有参数

使用${params}在JSON文件中写入所有参数,json,bash,shell,jenkins-pipeline,Json,Bash,Shell,Jenkins Pipeline,我是一个shell脚本的初学者,当jenkins的工作参数化时,我遇到了一些问题。我想使用${params}将带有参数的jenkins作业管道构建的所有参数写入JSON文件! 在我的例子中,我有4个参数(api:multi-select、name:string、version:single-select和status:Boolean),其中有脚本文件 pipeline { agent any stages { stage('Build') {

我是一个shell脚本的初学者,当jenkins的工作参数化时,我遇到了一些问题。我想使用
${params}
将带有参数的jenkins作业管道构建的所有参数写入JSON文件! 在我的例子中,我有4个参数(api:multi-select、name:string、version:single-select和status:Boolean),其中有脚本文件

pipeline {
  agent any
    stages {
        stage('Build') {              
            steps {              
                script{              
                   sh "./test.sh ${params}"
                }
            }
        }
    }
}
test.sh的内容

#!/bin/bash
echo $@ > file.json
詹金斯的产出

+ ./test.sh [apis:dev,qa,prod, name:CC, version:g3, status:true]
结果是file.json

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data

我的问题是如何格式化输出以在file.json中获得干净的结果?请告诉我需要帮助。

将此添加到脚本顶部:

import groovy.json.JsonOutput
然后使用此行代替
sh./test.sh${params}


这使用了一个Groovy库和一个用于编写文件的函数,这意味着您不需要使用
sh
方法。

这是很好的工作,谢谢,但是在值API
{“API”:“dev,qa,prod”,“name”:“CC”,“version”:“g3”,“status”:true}
中有一个问题,我希望像
“api”:“dev”,“qa”,“prod”
你知道吗?那不是有效的JSON。你是说
“api”:[“dev”、“qa”、“prod”]
?我会这样做,迭代数组以创建一个新数组,该数组的值被拆分:
writeFile file: 'params.json', text: JsonOutput.toJson(params)