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

时间:2014-10-09 16:02:48

标签: bash matlab unix parameter-passing command-line-arguments

传递给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)"

是否有更容易/更短的方法来做到这一点?

1 个答案:

答案 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')

它至少要短一点。