如何否定groovy中的变量

Cod*_*wer 4 groovy jenkins

我正在尝试使用 groovy 脚本否定一个变量,但它似乎无法使用 (!) ,这些变量是从运行 groovy 构建流程的 jenkins 控件传递的:

def P = "arg"
def resolver = build.buildVariableResolver
def V = resolver.resolve(P)
 print "V is " + V
 print "negated V is " + !V
Run Code Online (Sandbox Code Playgroud)

在两张印刷品中,我得到了相同的价值!!

cfr*_*ick 6

使用 JavaBoolean.valueOf()或 GroovyString.toBoolean()从字符串中获取正确的布尔值,即truefalse

def mybool = "false"
def v = Boolean.valueOf(mybool)
println "v=" + v
// => v=false
println "!v=" + !v
// => !v=true
Run Code Online (Sandbox Code Playgroud)

String.toBoolean()更灵活,并允许更广泛的“真实”字符串(true, y, 1, 全部修剪并忽略大小写)。

def b = "False"
def v = b.toBoolean()
println "v=" + v
// => v=false
println "!v=" + !v
// => !v=true
Run Code Online (Sandbox Code Playgroud)

虽然这些是问题的补救措施,但由于隐式强制转换,原始代码的行为与它一样。!"false"false(布尔值),正如"false"groovy 标准true(非空字符串)。