bash脚本中的Jenkins条件参数

bash脚本中的Jenkins条件参数,bash,shell,jenkins,parameters,build,Bash,Shell,Jenkins,Parameters,Build,我已经设置了一个Jenkins作业,每天运行bash脚本script.sh 默认情况下,脚本必须在没有参数的情况下运行,因此在Jenkins中,我添加了一个字符串参数PARAM,其默认值为空,并在shell中按如下方式执行脚本 script.sh "$PARAM" 通过这种方式,我可以单击buildwithparameters添加一个字符串,如--param1=val1--param2=val,Jenkins将运行以下等效程序: script.sh --param1=val1 --param2

我已经设置了一个Jenkins作业,每天运行bash脚本
script.sh

默认情况下,脚本必须在没有参数的情况下运行,因此在Jenkins中,我添加了一个字符串参数
PARAM
,其默认值为空,并在shell中按如下方式执行脚本

script.sh "$PARAM"
通过这种方式,我可以单击
buildwithparameters
添加一个字符串,如
--param1=val1--param2=val
,Jenkins将运行以下等效程序:

script.sh --param1=val1 --param2=val
这很好,但是您必须记住脚本接受的所有可能参数

我想知道我是否可以设置字符串参数PARAM1和PARAM2,它们的值默认为空,并在PARAM1设置为val1时让Jenkins用--PARAM1=val1填充

我知道在executeshell部分,我可以将命令编写为:

script.sh $([ ! -z $PARAM1 ] && echo "--param1=$PARAM1") \
          $([ ! -z $PARAM2 ] && echo "--param2=$PARAM2")

但我真正想知道的是,是否有一些Jenkins插件可以使这更整洁。

假设Jenkins在正常环境中设置
PARAM
,那么您的原始示例将运行
script.sh“--param1=val1--param2=val
和not
script.sh--param1=val1--param2=val
这两件事截然不同。这对你的目标没有帮助,我只是觉得值得一提。谢谢Etan,我理解你的意思,但我可以向你保证它是以script.ssh--param1=val1--param2=val运行的。我不确定这是否取决于我解析参数的方式,或者是因为Jenkins在将脚本保存到一个临时文件之前替换了PARAM然后由bash运行…如果jenkins将一个定义为
script.sh“$PARAM”
的脚本作为
script.sh--param1=val1--param2=val
PARAM
的值,并将其作为
script.sh--param1=val1--param2=val,我觉得有点难以置信。