我想编写一个方便的函数来加载在命令行上传递的所有 matlab 脚本。语法看起来像
fmatlab myscript1.m myscript2.m ... mystriptN.m
我可以轻松地做一些预设脚本数量。例如,如果我只给它一个脚本:
function fmatlab () {
$MYMATLABPATH/matlab -r "edit "$1"" &
}
或者,对于两个脚本:
function fmatlab () {
$MYMATLABPATH/matlab -r "edit "$1" "$2"" &
}
等等。第一个打开 matlab,然后是在编辑器中传递的单个脚本,第二个打开 matlab,然后是它传递的两个脚本。这两种情况都会被检查。
但我不能做可变数量的脚本。例如,看似显而易见的扩展
function fmatlab () {
$MYMATLABPATH/matlab -r "edit "$@"" &
}
仅打开第一个脚本,而不打开其他脚本。我检查以确保第一个引号集中的命令对于两个脚本情况是相同的:
function fmatlab_echo () {
echo "edit "$1" "$2""
echo "edit "$@""
}
我得到
$ fmatlab_echo script1.m script2.m
edit script1.m script2.m
edit script1.m script2.m
我可能缺少一些关于 $@、& (转到终端的下一行)或 matlab -r 或三者的任意组合的基本内容。
答案1
看起来你想要:
fmatlab () {
$MYMATLABPATH/matlab -r "edit $*" &
}
当$*
在双引号内使用时,它使用空格连接所有参数(默认情况下)。