我试图通过Jenkinsfile获取用户输入,但我无法在shell中使用它。这是代码:
def userInput = timeout(time:60, unit:'SECONDS') {input(
id: 'userInput', message: 'URL Required', parameters: [
[$class: 'TextParameterDefinition', defaultValue: '', description: 'URL', name: 'url'],
])
}
node{
echo "Env jsfsjaffwef:"+userInput) //this works
echo "${userInput}" //but this does not
sh '''
python test.py ${userInput}
'''
}
答案 0 :(得分:2)
请注意string interpolation:变量将替换为双引号(".."
或多行变体"""
),但不会替换为单引号('..'
,分别为'''..'''
)。因此,sh
步骤不应替换它,上面的echo
应该正确使用它。
def userInput = timeout(time:60, unit:'SECONDS') {input(
id: 'userInput', message: 'URL Required', parameters: [
[$class: 'TextParameterDefinition', defaultValue: '', description: 'URL', name: 'url'],
])
}
node {
echo "Env jsfsjaffwef:"+userInput) //this works
echo "${userInput}" // this should have also worked before
sh """
python test.py ${userInput}
"""
}
因此,请确保您完全应用正确的引号,而不是像人们在此处所建议的那样替换它们。
答案 1 :(得分:0)
以下适用于Jenkins 2.62:
def userInput = input(
id: 'userInput', message: 'URL Required', parameters: [
[$class: 'TextParameterDefinition', defaultValue: '', description: 'URL', name: 'url'],
])
node('master') {
sh "echo userInput is: ${userInput}"
}