如何在bash脚本中验证Jenkins管道参数

8hhllhi2  于 12个月前  发布在  Jenkins
关注(0)|答案(2)|浏览(222)

在我的Pipeline Jenkins作业中,我有一个名为BUILD_TYPE

的Choice参数
我想检查用户选择了哪个值:

sh'''#!/bin/bash
     if [ "${params.BUILD_TYPE}" = "Debug" ]; then
         Debug = true
         Release = false
     else
         Debug = false
         Release = true
     fi
     '''

字符串
但得到

line 2: ${params.BUILD_TYPE}: bad substitution


我也试

[[ "${params.BUILD_TYPE}" == "Debug" ]];


同样的结果
这段代码可能有什么问题?我应该在Jenkins中使用什么语法?

y0u0uwnf

y0u0uwnf1#

我主要使用bat命令,但据我所知,你不能在“”(三重单引号)之间使用${var}。要使用它,你需要使用“(三重双引号)。只要改变这一点,你就应该能够在sh命令中获得${params.BUILD_TYPE}的值。
编辑:你的整个sh脚本应该在“中。所以它最后应该看起来像这样

sh"""#!/bin/bash
     if [ "${params.BUILD_TYPE}" = "Debug" ]; then
         Debug = true
         Release = false
     else
         Debug = false
         Release = true
     fi
     """

字符串

soat7uwm

soat7uwm2#

这段代码的一切都错了:
1.管道的目的不就是为了避免编写shell代码吗?
1.这不是有效的shell代码。首先,环境变量名不能包含“."。它看起来像shell和java或其他东西的混合体。我相信Jenkins会在普通变量中传递参数,如$BUILD_TYPE,但我没有做太多的管道,所以你必须检查一下。
1.在shell代码中,名称和右值之间不能有空格,必须是“”=true
1.这段shell代码什么也不做。它设置了一些变量,然后退出,所以什么也没有实现。在shell中设置的变量不会在其他任何地方使用。
我认为你需要回到第一原则,读一些关于这一点的书。

相关问题