【问题标题】:Running MATLAB from Unix shell script从 Unix shell 脚本运行 MATLAB
【发布时间】:2013-02-26 00:45:47
【问题描述】:

我在我的 Mac OS (Mountain Lion) 上从 Unix shell 脚本运行 MATLAB 脚本时遇到了一些问题。

我知道如何从 shell 调用 MATLAB 脚本,而且效果很好。但是,问题是我希望我的 shell 脚本在 MATLAB 完成运行后调用另一个程序。但是当 MATLAB 程序完成时,shell 就“卡住”了。也就是说,它不会继续执行 shell 中的其他函数,并且终端窗口卡在 MATLAB 环境中,而不是将控制权返回给 sh。

我在这里做什么?这是我的 shell 的副本:

#! /bin/sh
echo "Please make sure the network cable is plugged in" 
echo "(then press return to continue)"

sudo mv /System/Library/CoreServices/Dock.app /System/Library/CoreServices/Dock.app.bak
killall Dock

/Applications/MATLAB_R2008a/bin/matlab -nodesktop -r "run Documents/MATLAB/BLS/BLS"

sudo mv /System/Library/CoreServices/Dock.app.bak /System/Library/CoreServices/Dock.app

# OTHER COMMANDS AFTER HERE CALLING OTHER PROGRAMS ...

这两个“sudo mv”命令只是在 MATLAB 执行期间使 Dock 不可见,并在 MATLAB 完成后将其恢复。

第一个命令完美运行,使 Dock 不可见,然后运行 ​​MATLAB。但是,当 MATLAB 完成运行时,它不会继续运行 shell 的其余部分。终端在 MATLAB 中“卡住”了。我试过摆弄命名管道等,但我无法让它们中的任何一个工作。

如何让它在 MATLAB 完成后继续执行 shell 脚本?

【问题讨论】:

标签: matlab shell unix


【解决方案1】:

您是否尝试将exit 添加到 Matlab 命令?

/Applications/MATLAB_R2008a/bin/matlab -nodesktop -r "run Documents/MATLAB/BLS/BLS; exit;"

【讨论】:

  • 我确实尝试过,但似乎我做错了。我没有意识到我可以在那里使用分号。感觉有点傻,其实,这很明显。谢谢!
  • @RyanSimmons 批量运行 matlab 需要在最后使用 exit 命令来终止会话。您可以将其放在命令行中(... -r " foo(); exit();"),也可以将其添加到您正在执行的函数/脚本中。
猜你喜欢
  • 2014-09-29
  • 2013-08-14
  • 1970-01-01
  • 2010-10-06
  • 2013-03-18
  • 2021-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多