编写 bash 函数来自动加载 matlab 脚本

编写 bash 函数来自动加载 matlab 脚本

我想编写一个方便的函数来加载在命令行上传递的所有 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 $*" &
}

$*在双引号内使用时,它使用空格连接所有参数(默认情况下)。

相关内容