3

我有一个 Matlab R2007b 脚本,我从这样的批处理脚本中调用它:

   matlab.exe -nosplash -nodesktop -r my_script

我在 Matlab 脚本中有一个 try/catch 块,出错时它运行 exit(1),以向调用进程(间接地,Jenkins!)指示进程失败。

这很好用,除了偶尔因错误退出 Matlab 想要保存任何修改过的文件并弹出一个保存对话框(当你用 Jenkins 无头运行时不是很好!)。我可以通过“退出力”避免这种情况,但我的返回码始终为 0(表示 Jenkins 成功)。

是否可以在 Matlab 中强制退出并设置大于零的返回码?

   exit(1) force
4

1 回答 1

0

我也试图找出解决这个问题的方法。由于使用环境变量并没有按照我们想要的方式工作,因此我创建了一个解决方法,其中使用了一个在 Matlab 调用失败时创建的虚拟文件,然后在 Jenkins 中进行检查(当前没有 Matlab 访问权限,可能有些引号是错误的):

matlab -r "try, [returnVal]=ScriptName;catch, disp('exception occurred']); returnVal= -1; end, if (returnVal~= 0), fid = fopen('errorFile.txt','wt'); fclose(fid); end, exit force"

IF EXIST errorFile.txt (exit /b 1)

通常,当然,在 Windows 的 matlab 调用中包含其他参数也是有意义的,例如:

matlab -log -nosplash -nodesktop -noFigureWindows -minimize -wait
于 2018-07-30T09:22:30.890 回答