传递可变数量的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)"
是不是有更简单/更短的方式做到这一点?
答
从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')
这是一个有点短,至少。
在什么时间点你会知道N的价值? – 2014-10-09 16:08:37
从来没有。问题是我正在用MATLAB开发一个程序。主MATLAB函数的输入参数数量可能会随时间而改变。我不想修改每次我决定添加另一个输入参数时启动我的MATLAB程序的bash脚本。 – Aeronaelius 2014-10-09 16:14:45
+1为正确的拼写 - 'MATLAB'而不是'matlab'这是在这里被广泛用于堆栈溢出。对不起,虽然我没有有用的评论。 – Divakar 2014-10-09 16:20:40