将可变数量的 bash 命令行参数传递给 MATLAB 函数

Posted

技术标签:

【中文标题】将可变数量的 bash 命令行参数传递给 MATLAB 函数【英文标题】:Pass a variable number of bash command line arguments to a MATLAB function 【发布时间】:2014-12-04 15:38:34 【问题描述】:

传递给 bash 脚本的参数可以通过以下方式传递给 MATLAB 函数:

#!/bin/bash

matlab -nodesktop -nosplash -nodisplay -r "my_function('$1','$2')"

但是,如果我不知道先验的参数数量怎么办?所以我想做这样的事情:

#!/bin/bash

matlab -nodesktop -nosplash -nodisplay -r "my_function('$1',...,'$N')"

我不知道 N 等于先验。

我认为您可以使用包含'$1',...,'$N' 的 for 循环创建一个字符串,并将整个字符串传递给上述命令。但是没有更简洁的方法吗?

FIW,我不精通 bash。所以如果循环是唯一的方法,你能告诉我怎么做吗?

编辑

我设法为我的问题设计了一个解决方案:

#!/bin/bash

INPUT=""
for var in "$@"
do
    INPUT=$INPUT"'"$var"',"
done
INPUT=$INPUT%?

matlab -nodesktop -nosplash -nodisplay -r "my_function($INPUT)"

没有更简单/更短的方法吗?

【问题讨论】:

什么时候你会知道 N 的值? 从不。问题是我正在用 MATLAB 开发一个程序。 MATLAB 主函数的输入参数数量可能会随时间而变化。而且我不想修改每次决定添加另一个输入参数时启动我的 MATLAB 程序的 bash 脚本。 +1 表示正确的拼写 - MATLAB 而不是在 Stack Overflow 上广泛使用的 matlab。抱歉,我没有任何有用的评论。 【参考方案1】:

从here获得灵感:

#!/bin/bash

INPUT=$(printf "'%s'," "$@") && INPUT=$INPUT%,

echo matlab -nodesktop -nosplash -nodisplay -r "my_function($INPUT)"

输出:

$ ./test.sh one two three
matlab -nodesktop -nosplash -nodisplay -r my_function('one','two','three')

至少要短一点。

【讨论】:

以上是关于将可变数量的 bash 命令行参数传递给 MATLAB 函数的主要内容,如果未能解决你的问题,请参考以下文章

可以将可变数量的参数传递给函数吗?

C – 将可变数量的参数传递给 main

是否可以将可变数量的参数传递给redshift中的存储过程?

如何从 Git Bash 中将命令行参数传递给 Windows 应用程序?

将 IPython 变量作为参数传递给 bash 命令

如何在 Linux 中使用终端命令将文件参数传递给我的 bash 脚本? [复制]