You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins中创建可代入参数变量的JSON文件

问题原因

你的变量没有被替换的核心原因是:单引号包裹的字符串在shell中不会解析内部变量,所有内容都会原样输出,所以$company_name不会被替换为实际值。另外你示例代码中JSON的最后一个键值对后多了冗余逗号,会导致生成的JSON格式非法,也需要修正。

解决方案

方案1:改用双引号包裹echo内容

将外层的单引号替换为双引号,同时转义JSON内部的双引号即可:

echo "
{
    \"common\": {
        \"baseUri\": \"$company_name\",
        \"ipPrefix\": \"192.23.4.\"
    }
}" > test.json

方案2:使用Here Doc生成(更推荐多行场景)

Here Doc的可读性更高,不需要大量转义引号,适配复杂内容:

cat > test.json << EOF
{
    "common": {
        "baseUri": "$company_name",
        "ipPrefix": "192.23.4."
    }
}
EOF

如果是在Jenkins Pipeline中使用,直接嵌入sh步骤即可,同时支持调用Jenkins内置参数/环境变量:

steps {
    // 其中${params.company_name}会直接被Jenkins替换为构建参数值
    sh """
cat > test.json << EOF
{
    "common": {
        "baseUri": "${params.company_name}",
        "ipPrefix": "192.23.4."
    }
}
EOF
    """
}

方案3:用jq生成(复杂JSON场景首选)

如果JSON结构复杂、包含特殊字符,用jq命令生成可以自动处理转义,避免格式错误:

jq -n --arg base_uri "$company_name" '
{
    "common": {
        "baseUri": $base_uri,
        "ipPrefix": "192.23.4."
    }
}' > test.json

内容的提问来源于stack exchange,提问作者Samselvaprabu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:45:03