传递可变数量的bash命令行参数的MATLAB函数传递给一个bash脚本可以被传递到MATLAB功能通过以下方式

问题描述:

参数:传递可变数量的bash命令行参数的MATLAB函数传递给一个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等于先验。

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

FIW,我不是流利的bash。所以如果循环是唯一的方法,请告诉我如何做到这一点?

编辑

我设法想出一个解决我的问题:

#!/bin/bash 

INPUT="" 
for var in "[email protected]" 
do 
    INPUT=$INPUT"'"$var"'," 
done 
INPUT=${INPUT%?} 

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

是不是有更简单/更短的方式做到这一点?

+0

在什么时间点你会知道N的价值? – 2014-10-09 16:08:37

+0

从来没有。问题是我正在用MATLAB开发一个程序。主MATLAB函数的输入参数数量可能会随时间而改变。我不想修改每次我决定添加另一个输入参数时启动我的MATLAB程序的bash脚本。 – Aeronaelius 2014-10-09 16:14:45

+1

+1为正确的拼写 - 'MATLAB'而不是'matlab'这是在这里被广泛用于堆栈溢出。对不起,虽然我没有有用的评论。 – Divakar 2014-10-09 16:20:40

here获得灵感:

#!/bin/bash 

INPUT=$(printf "'%s'," "[email protected]") && 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') 

这是一个有点短,至少。