在Unix shell脚本中运行MATLAB

3
我在我的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中。我尝试了使用命名管道等方法来解决问题,但是没有成功。

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


请参考http://hints.macworld.com/article.php?story=20100316164551355,了解一种更好的隐藏Dock的方法。 - chepner
1个回答

7
您是否尝试过将exit添加到Matlab命令中?
/Applications/MATLAB_R2008a/bin/matlab -nodesktop -r "run Documents/MATLAB/BLS/BLS; exit;"

我确实尝试过,但似乎做错了。我没有意识到我可以在那里使用分号。感觉有点傻,其实很明显。谢谢! - Ryan Simmons
1
@RyanSimmons 在批处理中运行Matlab需要在结尾处加上exit命令来终止会话。你可以将其放在命令行中(... -r " foo(); exit();"),也可以添加到你正在执行的函数/脚本中。 - Shai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接