Bash脚本错误运行MATLAB

时间:2012-08-03 23:30:51

标签: bash matlab cluster-computing pbs

我正在尝试在群集中运行matlab脚本(ga_opt_main.m)。我必须编写一个作业提交文件,它本质上只是一个shell脚本。但我从来没有写过shell脚本,这就是我写的

  #!/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'

关于为什么会发生这种情况以及如何避免这种情况的任何想法? 谢谢!

2 个答案:

答案 0 :(得分: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;"

答案 1 :(得分: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脚本/函数中。另外,不要在您的matlab文件名中添加“.m”。