executando o script bash no servidor para executar vários scripts do MATLAB

0

Eu não sou um programador, apenas um químico. Eu estou escrevendo um script bash, que eu quero rodar no servidor e espero que faça o seguinte:

  1. Abra um terminal
  2. Fazer um loop pelas pastas slave_1 , slave_2 , ..., slave_N para cada pasta, abra uma guia, inicie o MATLAB ( maltab -nodesktop ), crie um cd para a pasta e execute o script slave_process .

Aqui está o que eu tenho até agora:

#!/bin/bash

for i in {1..5}
do
gnome-terminal --tab  --working-directory="/usr/local/MATLAB/MATLAB_Production_Server/R2015a/bin" --command='./matlab -nodesktop; cd /mnt/projects/slave_$i; -nosplash -r slave_process'
done

exit 0

Algum pode me ajudar a fazer o roteiro funcionar? Eu não estou no arquivo sudoers, então não posso mudar nada no servidor.

Atualizar. A resposta de @muru faz o truque, mas ele inicia um novo terminal em cada iteração de loop, o que é uma dor, já que preciso executar 200 instâncias do MATLAB. Eu quero ter várias guias no mesmo terminal (ou não terminal em tudo está bem também). Aqui está o meu código modificado, que não funciona:

args=()
for i in {1..5}; do
    cmd=working-directory='/mnt/projects/slave_$i' --command='/usr/local/MATLAB/MATLAB_Production_Server/R2015a/bin/matlab -nodesktop -nosplash -r slave_process'
    args+=(--tab-with-profile=Default -e "sh -c \"$cmd; bash\"")
done

gnome-terminal "${args[@]}"

Alguém pode ajudar aqui?

    
por user3428703 22.11.2015 / 22:38

1 resposta

0

Notas:

  • A expansão de variável não funciona dentro de aspas simples '' - então slave_$i na segunda parte do seu comando permanecerá slave_$i .
  • Como você sabe o caminho do comando matlab , execute-o diretamente usando o caminho completo, em vez de começar nesse diretório e usar ./matlab .
  • Se -nosplash -r slave_process forem argumentos para matlab , eles deverão estar no mesmo comando.
  • exit 0 é desnecessário.

Considere algo como:

#!/bin/bash

for i in {1..5}
do
    gnome-terminal --tab  --working-directory="/mnt/projects/slave_$i" \
      --command='/usr/local/MATLAB/MATLAB_Production_Server/R2015a/bin/matlab -nodesktop -nosplash -r slave_process'
done
    
por muru 22.11.2015 / 22:46