带有单引号的Shell块不考虑变量,因此必须使用双引号。示例:
我希望能够从shell调用参数值,并在我的shell脚本中使用它。我的首要任务是不为参数中选择的每个值使用If,而是选择活动选项。这可能是因为我对这个错误有意见吗?
第4行:${params.prime_server}:替换错误
#!/usr/bin/env groovy
properties([
parameters([
choice(
name: 'prime_server',
choices: ['','choice1', 'choice2', 'choice3','choice4'],
description: 'Name choice'
),
choice(
name: 'old_server',
choices: ['','choice1', 'choice2', 'choice3','choice4'],
description: 'Name choice'
)
])
])
stage('stage1') {
environment{
}
node("master") {
sh '''
echo -e "-------------------------------Calling the params value into shell----------------------------"
echo "${params.prime_server}"
echo "${params.old_server}"
oldserver="${params.old_server}"
primeserver="${params.prime_server}"
echo "${oldserver}"
echo "${primeserver}"
sed -i -e "0,/${oldserver}/ s/${oldserver}/${primeserver}/g" test.xml
'''.stripIndent()
}
}
是否可以调用此参数值并将其分配给shell 中的变量
sh """
<your code>
"""
如果希望Groovy进行字符串插值,则应该使用双引号。所以像下面这样改变你的外壳块。
sh """
echo -e "-------------------------------Calling the params value into shell----------------------------"
echo "${params.prime_server}"
echo "${params.old_server}"
oldserver="${params.old_server}"
primeserver="${params.prime_server}"
echo "${oldserver}"
echo "${primeserver}"
sed -i -e "0,/${oldserver}/ s/${oldserver}/${primeserver}/g" test.xml
""".stripIndent()