比较果冻脚本中的2个变量
Posted
技术标签:
【中文标题】比较果冻脚本中的2个变量【英文标题】:compare 2 variables in jelly script 【发布时间】:2022-01-20 20:09:35 【问题描述】:<j:set var="maxEachOSTime" value="0" />
<j:if test="$xmlval > maxEachOSTime">
$xmlval > $ maxEachOSTime
<j:set var="maxEachOSTime" value="$xmlval"/>
<j:set var="finalTotalDuration" value="$total_duration"/>
</j:if>
如果将 $xmlval 与一个数字(1、200 等)进行比较,它会起作用。但 与 $eachMaxOSTime 相比,它不起作用。 (条件是 始终如常工作) .intValue() 也没有帮助。是什么 解决方案?
【问题讨论】:
【参考方案1】:这就是在我的特定用例中最终帮助我的原因。
xmlval 是从 xml 文件中读取的具有整数值的变量
maxEachOSTime 变量默认通过
将其转换为浮点数并使用其 intValue()
之前的 intValue() 无法正常工作,因为 String 没有属性 intValue,因此跳过了 if 条件。
这可以通过直接处理整数来即兴发挥
<j:new className="java.lang.Float" var="tempFloat">
<j:arg value="$maxEachOSTime" type="float"/>
</j:new>
<j:set var="intThing" value="$tempFloat.intValue()"/>
<j:if test="$xmlval > intThing">
<j:set var="maxEachOSTime" value="$xmlval"/>
<j:set var="finalTotalDuration" value="$total_duration"/>
</j:if>
【讨论】:
【参考方案2】:下面的结构用于用 Jelly 脚本定义一个string
变量:
<j:set var="stringVariable" value="I have value!"/>
<j:set var="maxEachOSTime" value="0"/>
因此,maxEachOSTime
变量的类型为string
。您正在尝试使用转义字符 &gt;
将等式左侧的 integer
与 string
等同起来。
【讨论】:
如何声明一个 int 值?变量 (xmlval) 是通过读取 xml 来获取的,例如:duration_int="45" 基本上我想在读取多个 xml 后找到最大数量(如果您有任何其他可行/简单的解决方案,我也会接受这一点 我认为在上述<j:if>
块的比较中,左侧是int
,但右侧不起作用,因为它是string
。这就是为什么我认为当他将toInteger()
方法应用于等式右侧的字符串变量时它可能会起作用。如果您想通过变量使用高级功能,则需要在管道中进行这些操作。您应该搜索的关键字是"Jenkins Pipeline: How To Define a Variable"
。
我避免在 jenkins 管道中读取多个 xml 文件。但是如果我们没有其他选择,我会尝试一下,谢谢
果冻本身就起作用了,你上面的 cmets 帮我用谷歌搜索了正确的上下文!!
我以前从未与 Jelly 合作过。我只是想帮你。以上是关于比较果冻脚本中的2个变量的主要内容,如果未能解决你的问题,请参考以下文章