如何在Ubuntu终端或Bash脚本中传入系统参数运行Matlab脚本
Matlab 终端运行脚本传入参数的实现方法
Matlab 没有和 Python sys.argv 完全对等的内置语法,你可以通过将脚本封装为入口函数的方式实现参数接收,适配终端/Bash 脚本调用的场景。
示例实现(对应你给出的 Python 示例)
1. 编写 Matlab 代码
将你的逻辑封装为函数,文件名需要和函数名完全一致,比如我们创建文件 sample.m,内容如下:
% 入口函数名和文件名保持一致,均为 sample function sample(variable_name) % 直接使用传入的参数,这里实现打印功能 disp(variable_name) end
如果你需要接收任意数量的参数,可以用可变参数列表 varargin,用法和 sys.argv 类似:
function sample(varargin) % 读取第一个参数,和 sys.argv[1] 效果一致 variable_name = varargin{1}; disp(variable_name); % 你可以通过 length(varargin) 获取传入参数的总数量 end
2. 终端运行方式
版本要求 R2019a 及以上(推荐用法)
Matlab 提供了 -batch 参数专门用于无界面批处理,执行完自动退出,不需要额外配置:
$ matlab -batch "sample('arguments')"
旧版本 Matlab 兼容用法
如果你的 Matlab 版本低于 R2019a,用以下命令运行:
$ matlab -nodisplay -nosplash -nodesktop -r "sample('arguments'); exit"
Bash 脚本传参示例
如果要在 Bash 脚本中传递变量参数,注意引号转义即可:
#!/bin/bash # 定义 Bash 变量 input_arg="测试参数" # 传递到 Matlab 函数中 matlab -batch "sample('$input_arg')"
注意事项
- 如果传入的是数值类型参数,你可以直接写数值不需要加引号,比如
sample(123, 45.6),也可以传入字符串后在 Matlab 代码中用str2double()做类型转换 - 如果参数内容包含空格、特殊字符,一定要确保 Bash 层的引号包裹正确,避免解析错误
- 如果你不想修改脚本为函数形式,也可以通过环境变量传递参数:Bash 层用
export 参数名=参数值设置,Matlab 层用getenv('参数名')读取即可
内容的提问来源于stack exchange,提问作者Maria__
相关产品推荐
相关产品推荐

