Escrevendo uma função bash para carregar automaticamente scripts matlab

3

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.

    
por ALB 31.08.2017 / 20:04

1 resposta

3

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).

    
por 31.08.2017 / 20:35