繁体   English   中英

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

[英]Pass a variable number of bash command line arguments to a MATLAB function

可以通过以下方式将传递给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)"

有没有更简单/更短的方法来做到这一点?

这里汲取灵感:

#!/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')

至少要短一些。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM