传递给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,我不会精打细节。因此,如果循环是唯一的方法,请告诉我如何做到这一点?
修改
我设法解决了我的问题:
#!/bin/bash
INPUT=""
for var in "$@"
do
INPUT=$INPUT"'"$var"',"
done
INPUT=${INPUT%?}
matlab -nodesktop -nosplash -nodisplay -r "my_function($INPUT)"
是否有更容易/更短的方法来做到这一点?
答案 0 :(得分:3)
从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')
它至少要短一点。