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

8hhllhi2  于 2024-01-07  发布在  Jenkins
关注(0)|答案(2)|浏览(307)

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

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

  1. sh'''#!/bin/bash
  2. if [ "${params.BUILD_TYPE}" = "Debug" ]; then
  3. Debug = true
  4. Release = false
  5. else
  6. Debug = false
  7. Release = true
  8. fi
  9. '''

字符串
但得到

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


我也试

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


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

y0u0uwnf

y0u0uwnf1#

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

  1. sh"""#!/bin/bash
  2. if [ "${params.BUILD_TYPE}" = "Debug" ]; then
  3. Debug = true
  4. Release = false
  5. else
  6. Debug = false
  7. Release = true
  8. fi
  9. """

字符串

soat7uwm

soat7uwm2#

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

相关问题