2012-08-03 96 views
3

我試圖在集羣中運行一個matlab腳本(ga_opt_main.m)。我必須寫一份作業提交文件,它基本上只是一個shell腳本。但我從來沒有寫過一個shell腳本,這是我寫的Bash腳本運行MATLAB錯誤

#!/bin/bash 
    #PBS -q *queuename* 
    #PBS -l nodes=1:ppn=20 
    #PBS -l walltime=02:00:00 
    #PBS -N ga_opt_main 

    module load matlab/R2011b 
    module list 

    unset DISPLAY 
    matlab -nodisplay -nodesktop -r *directory path/ga_opt_main.m* 

MATLAB在後臺打開,但我的工作是不會運行。相反,我得到一個錯誤文件說

bash: -c: line 0: syntax error in conditional expression 
    bash: -c: line 0: syntax error near `fraction' 

任何想法爲什麼發生這種情況,以及如何可以避免? 謝謝!

+1

我以前從未使用PBS,但它看起來像星號之間的單詞是佔位符文本,你應該用其他東西替換。例如'#PBS -q * queuename *'看上去有點腥...... – 2012-08-04 00:29:22

+0

@CypressFrankenfeld:在'-r「...之間傳遞的任何東西都必須是正確的命令,你可以在MATLAB命令窗口中輸入IDE。要運行一個腳本,你要麼瀏覽到文件所在的目錄,要麼將它的文件夾添加到'path',然後按名稱(或使用我已經顯示的RUN函數)來調用它。 – Amro 2012-08-04 00:36:39

+0

@Amro,你完全正確。我將刪除該帖子,並只提及您的答案。 – 2012-08-04 00:46:45

回答

2

我從來沒有使用PBS之前,而是從shell中運行MATLAB腳本,請嘗試以下操作:

matlab -nodesktop -nodisplay -r "addpath('/directory/path'); ga_opt_main; quit;" 

其中ga_opt_main.m是腳本文件的名稱,並'/directory/path'是目錄的地方駐留。請注意,您還必須在MATLAB路徑上具有此腳本的任何其他依賴項。

還有一個方便RUN功能,做類似的事情:

matlab ... -r "run('/directory/path/ga_opt_main.m'); quit;" 
+0

非常感謝。是的,目錄路徑命令中有錯誤。修復它..再次感謝! – 2012-08-26 04:46:04

1
############################### 
#!/bin/sh 
#PBS -l nodes=1 
#PBS -l walltime=2:0:0 
#PBS -j oe 
#PBS -o localhost:/dev/null 
#PBS -d /your/working/directory 


    cd $PBS_O_WORKDIR 
    matlab -nodisplay -nodesktop -nojvm -nosplash -r "your_matlab_function" 

我想補充addpath(genpath('~/your/script's/home'));實際MATLAB腳本/功能。此外,不要將「.m」添加到您的matlab文件名。