Mostrar plotagem de Octave a partir do shell script

1

Se eu invocar o Octave para traçar algo, ele precisa do prompt interativo para ficar em execução e mostrar o gráfico.

Ao executar a partir da linha de comando, a opção --persist forçará o Octave a se manter aberto depois que todos os comandos do Octave forem executados, para que eu possa ver e manipular o gráfico.

--persist Go interactive after --eval or reading from FILE.

No entanto, quando invoco o Octave de um script de shell não interativo, ele não pode entrar no modo interativo, não reage à opção de linha de comando --persist , nem o comando pause() dentro de scripts do Octave.

Existe alguma maneira de permitir que o Octave permaneça interativamente invisível, se invocado a partir de um script de shell?

    
por dronus 19.05.2015 / 21:12

1 resposta

2

Eu tento reproduzir o seu problema, mas não foi possível. Eu fiz este teste arquivos oct.txt

x = -10:.1:10;
y = sin(x).*exp(-abs(x));
plot(x,y)

e go.sh (e torná-lo executável com chmod u+x go.sh )

#!/bin/bash
octave -q --persist oct.txt  # It calls the octave and remain as interactive
echo " Now we continue "     # Here the script continue when you exit from octave
sleep 5                      # Do some stuffs
exit                         # It exits

Quando eu executo com ./go.sh , inicia octave e quando eu sair, continua com o script.

Quando eu adiciono pause() ou pause(10) ao final de oct.txt e eu chamo oitava com o comando octave -q oct.txt & ele se comporta como suposto:

  1. o script começa em oitava em segundo plano e continua
  2. eventualmente o script termina deixando as janelas de oitava vivas

Infelizmente, as janelas de octave estão congeladas no comando pause e não são tão úteis.

  • GNU bash, versão 4.3.11
  • GNU Octave, versão 3.8.1
por 24.06.2015 / 18:51