我配置了一个参数化的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'