2013-02-25 171 views
3

我在我的Mac OS(Mountain Lion)上從Unix shell腳本運行MATLAB腳本時遇到了一些麻煩。從Unix shell腳本運行MATLAB

我知道如何從shell調用MATLAB腳本,並且工作正常。然而,問題是我希望我的shell腳本在MATLAB完成運行後再調用另一個程序。但是當MATLAB程序結束時,外殼會「卡住」。也就是說,它不會繼續執行shell中的其他函數,並且終端窗口停留在MATLAB環境中,而不是將控制權返回給sh。

我在這裏做什麼?這裏是我的殼的副本:

#! /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腳本?

+0

查看http://hints.macworld.com/article.php?story=20100316164551355可以更好地隱藏碼頭。 – chepner 2013-02-25 18:05:23

+0

謝謝,我會試試 – 2013-02-26 14:59:06

回答

6

您是否嘗試過在Matlab命令中添加exit

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

我確實嘗試過,但似乎我做錯了。我沒有意識到我可以在那裏使用分號。感覺有點愚蠢,實際上,這很明顯。謝謝! – 2013-02-26 15:04:29

+1

@RyanSimmons批處理運行matlab需要在結束時使用'exit'命令來終止會話。你可以把它放在命令行('... -r「foo(); exit();」')中,或者你可以將它添加到正在執行的函數/腳本中。 – Shai 2013-02-26 15:06:56