传递给 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 不太熟悉。因此,如果循环是唯一的方法,您能告诉我该怎么做吗?
EDIT
我设法解决我的问题:
#!/bin/bash
INPUT=""
for var in "$@"
do
INPUT=$INPUT"'"$var"',"
done
INPUT=${INPUT%?}
matlab -nodesktop -nosplash -nodisplay -r "my_function($INPUT)"
难道没有更简单/更短的方法来做到这一点吗?
从中汲取灵感here https://stackoverflow.com/a/10883271/1563512:
#!/bin/bash
INPUT=$(printf "'%s'," "$@") && INPUT=${INPUT%,}
echo matlab -nodesktop -nosplash -nodisplay -r "my_function($INPUT)"
Output:
$ ./test.sh one two three
matlab -nodesktop -nosplash -nodisplay -r my_function('one','two','three')
至少短了一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)