Shell 命令不符合预期
Shell command not as expected
我是 Jenkins 的新手 Pipelines/Groovy 并且正在努力解决以下问题:
stage('Gating') {
def gatingBaseUrl = "https://www.gating.org/api"
def gatingParams = [
"fiability": "$MIN_FIABILITY",
"security": "$MIN_SECURITY",
"maintenability": "$MIN_MAINTENABILITY"
]
gatingQueryParams = gatingParams.collect{ k,v -> "$k=$v" }.join('&')
gatingUrl = gatingBaseUrl + '?' + gatingQueryParams
println "gatingUrl: " + gatingUrl
sh(script: "echo $gatingUrl", returnStdout: true)
}
输出如下:
[Pipeline] echo
gatingUrl: https://www.gating.org/api?fiability=A&security=A&maintenability=A
[Pipeline] sh
+ maintenability=A
+ echo 'https://www.gating.org/api?fiability=A&security=A&maintenability=A'
+ security=A
我想弄清楚为什么我的 url 在 shell 中使用时会被拆分,我该如何修复它。
谢谢
因为bash或shell中的&
有不同的含义。我为此找到了一个很好的 guide - 看一看。
要解决您的问题,只需将 &
替换为 \&
转义序列,它应该可以工作。如下所示。
sh(script: "echo ${gatingUrl.replace('&','\&')}", returnStdout: true)
或
sh "echo ${gatingUrl.replace('&','\&')}"
我是 Jenkins 的新手 Pipelines/Groovy 并且正在努力解决以下问题:
stage('Gating') {
def gatingBaseUrl = "https://www.gating.org/api"
def gatingParams = [
"fiability": "$MIN_FIABILITY",
"security": "$MIN_SECURITY",
"maintenability": "$MIN_MAINTENABILITY"
]
gatingQueryParams = gatingParams.collect{ k,v -> "$k=$v" }.join('&')
gatingUrl = gatingBaseUrl + '?' + gatingQueryParams
println "gatingUrl: " + gatingUrl
sh(script: "echo $gatingUrl", returnStdout: true)
}
输出如下:
[Pipeline] echo
gatingUrl: https://www.gating.org/api?fiability=A&security=A&maintenability=A
[Pipeline] sh
+ maintenability=A
+ echo 'https://www.gating.org/api?fiability=A&security=A&maintenability=A'
+ security=A
我想弄清楚为什么我的 url 在 shell 中使用时会被拆分,我该如何修复它。 谢谢
因为bash或shell中的&
有不同的含义。我为此找到了一个很好的 guide - 看一看。
要解决您的问题,只需将 &
替换为 \&
转义序列,它应该可以工作。如下所示。
sh(script: "echo ${gatingUrl.replace('&','\&')}", returnStdout: true)
或
sh "echo ${gatingUrl.replace('&','\&')}"