我配置了一个参数化的Jenkins作业构建,它采用了以下参数“testcases”:
-t "Can Get Fake Name" -t "Can call Password"
这是一个必须通过命令行传递给robot框架可执行文件的字符串。
Jenkins正在Linux(Centos 7)上运行,这是我为实现目标而编写的构建脚本:

robot "${testcases}" myrobottest.robot

我发现${testcases}建议here部分解决了我的问题。
对Jenkins的结果命令如下:
+ robot '-t "Can Get Fake Name" -t "Can call Password"' myrobottest.robot
[ ERROR ] Suite 'myrobottest' contains no tests named ' "Can Get Fake Name" -t "Can call Password"'.

这里的问题是后面的单引号,我不知道如何删除(或不产生)。
在使用${testcases}符号之前,我也尝试过使用类似$testcases的环境变量,但它会生成带有许多无用单引号的内容。
有什么建议吗?
我希望生成的命令行
robot -t "Can Get Fake Name" -t "Can call Password" myrobottest.robot

但实际产出是:
robot '-t "Can Get Fake Name" -t "Can call Password"' myrobottest.robot

编辑
我又做了一次尝试。
如果我更改脚本行如下:
eval echo robot \${testcases} docker-robot-framework.robot

我得到以下控制台输出。
+ eval echo robot '${testcases}' myrobottest.robot
++ echo robot -t '"Can' Get Fake 'Name"' myrobottest.robot
robot -t "Can Get Fake Name" myrobottest.robot

我想我已经接近解决方案了,因为我只需要执行这样的eval表达式(顺便说一下,这是正确的)。

最佳答案

我解决了以下问题:

/bin/sh -c "robot $testcases myrobottest.robot"

实际上,现在执行的结果命令行是正确的,并且可以工作:
/bin/sh -c 'robot -t "Can Get Fake Name" -t "Can call Password" myrobottest.robot'

10-04 21:49