使用 karate.fork() 执行多个 linux 命令

问题描述

是否可以使用 karate.fork() 添加多个命令?我尝试使用添加命令;或 && 分离,但第二个命令似乎没有被执行。

在 shell 脚本上执行 bash 之前,我试图 cd 到特定目录。

* def command =
"""
function(line) {
    var proc = karate.fork({ redirectErrorStream: false,useShell: true,line: line });
    proc.waitSync();
    karate.set('sysOut',proc.sysOut);
    karate.set('sysErr',proc.sysErr);
    karate.set('exitCode',proc.exitCode);
}
"""
* call command('cd ../testDirectory ; bash example.sh')

解决方法

请注意,支持命令行参数数组而不是 line - args,因此也可以尝试 - 例如类似:

karate.fork({ args: ['cd','foo;','bash','example.sh'] })

但是是的,这可能需要一些调查。您始终可以尝试将所有命令都放在一个应该可以工作的批处理文件中。

如果您可以试试 1.0 RC 就好了,因为可能已经添加了一些改进:https://github.com/intuit/karate/wiki/1.0-upgrade-guide