如何在linux中以脚本文件的形式运行matlab代码?

如何在linux中以脚本文件的形式运行matlab代码?,linux,bash,matlab,Linux,Bash,Matlab,我正在研究在Linux中运行类似于bash/python脚本的matlab脚本。例如,可以作为应用程序运行的matlab脚本。以下是我提出的实现- 创建包含以下行的/usr/bin/mash脚本文件- #!/bin/bash grep -ve '^(#!\|^\s*$)' ${@: -1} | ${@: 1:$#-1} exit $? 使mash脚本可执行- $ chmod +x /usr/bin/mash $ chmod +x mash 编写名为test.msh的mat

我正在研究在Linux中运行类似于bash/python脚本的matlab脚本。例如,可以作为应用程序运行的matlab脚本。

以下是我提出的实现-

  • 创建包含以下行的
    /usr/bin/mash
    脚本文件-

    #!/bin/bash
    
    grep -ve '^(#!\|^\s*$)' ${@: -1} | ${@: 1:$#-1}     
    exit $?
    
  • 使mash脚本可执行-

    $ chmod +x /usr/bin/mash
    
    $ chmod +x mash
    
  • 编写名为
    test.msh的matlab脚本文件

    #!/usr/bin/mash /usr/local/MATLAB/R2012a/bin/matlab -nodisplay
    
    format long
    
    a = 2*pi           % matlab commands ...
    
    $ ./test.msh 
    
    ...
    
    >> >>  a =
    
    6.283185307179586
    
  • 使
    test.msh
    脚本可执行-

    $ chmod +x /usr/bin/mash
    
    $ chmod +x mash
    
  • 运行
    test.msh

    #!/usr/bin/mash /usr/local/MATLAB/R2012a/bin/matlab -nodisplay
    
    format long
    
    a = 2*pi           % matlab commands ...
    
    $ ./test.msh 
    
    ...
    
    >> >>  a =
    
    6.283185307179586
    

通过将以下头添加到要执行的文件中,无需自定义
mash
脚本,即可获得类似效果:

#/usr/bin/bash
/path/to/matlab -r "$(sed -n -e '4,$p' < "$0")"
exit $?
#/usr/bin/bash
/path/to/matlab-r“$(sed-n-e'4,$p'<“$0”)”
退出$?
如果希望matlab在执行脚本后终止,如示例中所示,可以将第二行替换为

sed -n -e '4,$p' < "$0" | /path/to/matlab
sed-n-e'4,$p'<“$0”|/path/to/matlab

这里的想法是执行一个bash命令,该命令只需剪掉脚本的头部,并将其余部分传递给matlab。

不要把它放在
/usr/bin
/usr/local/bin
是一个更好的地方
/usr/bin
是分发管理文件夹(或者应该是)。当列表中有代码块时,需要8个缩进,而不是4个缩进。)。比我想出的更好的解决方案。谢谢