Parece que você quer:
fmatlab () {
$MYMATLABPATH/matlab -r "edit $*" &
}
Quando $*
é usado entre aspas duplas, ele une todos os parâmetros usando um espaço (por padrão).
Eu quero escrever uma função de conveniência que carregue todos os scripts matlab que são passados na linha de comando. A sintaxe seria parecida com
fmatlab myscript1.m myscript2.m ... mystriptN.m
Eu posso facilmente fazer um número de pré-ajustes de scripts. Por exemplo, se eu der apenas um único script:
function fmatlab () {
$MYMATLABPATH/matlab -r "edit "$1"" &
}
Ou, para dois scripts:
function fmatlab () {
$MYMATLABPATH/matlab -r "edit "$1" "$2"" &
}
e assim por diante. O primeiro abre o matlab, então o único script é passado no editor e o segundo abre o matlab, então ambos os dois scripts são passados. Ambos os casos são verificados.
Mas não consigo fazer um número variável de scripts. Por exemplo, a extensão aparentemente óbvia
function fmatlab () {
$MYMATLABPATH/matlab -r "edit "$@"" &
}
abre apenas o primeiro script e nenhum dos outros. Eu verifiquei se o comando no primeiro conjunto de cotações era o mesmo para o caso de dois scripts:
function fmatlab_echo () {
echo "edit "$1" "$2""
echo "edit "$@""
}
e eu recebo
$ fmatlab_echo script1.m script2.m
edit script1.m script2.m
edit script1.m script2.m
Provavelmente estou sentindo falta de algo básico sobre $ @, & (vá para a próxima linha do terminal), ou matlab -r ou qualquer combinação dos três.
Tags matlab shell shell-script function