Показать октавный сюжет из сценария оболочки

Если я вызываю Octave для построения графика, ему нужно интерактивное приглашение, чтобы продолжить работу и показать график.

При запуске из командной строки, --persist опция заставит Octave оставаться открытым после выполнения всех команд Octave, поэтому я могу видеть и манипулировать графиком.

--persist Перейти в интерактивное состояние после --eval или чтения из файла.

Однако, когда я вызываю Octave из неинтерактивного сценария оболочки, он не может войти в интерактивный режим, не реагирует на --persist опция командной строки, ни pause() Команда внутри скриптов Octave.

Есть ли способ, позволяющий Octave невидимо оставаться интерактивным, если он вызывается из сценария оболочки?

1 ответ

Я пытаюсь воспроизвести вашу проблему, но это было невозможно. Я сделал это тестовые файлы oct.txt

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

а также go.sh (и я делаю его исполняемым с 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

Когда я запускаю его с ./go.sh это начинается octave и когда я выхожу, продолжается сценарий.


Когда я добавлю pause() или же pause(10) к основанию oct.txt и я называю октаву с командой octave -q oct.txt & ведет себя как положено:

  1. скрипт начинает октаву в фоновом режиме и продолжается
  2. в конце концов сценарий заканчивается, оставляя в живых октавные окна

К сожалению, окна октавы замерзли от pause Команда и не так полезна.


  • GNU bash, версия 4.3.11
  • GNU Octave, версия 3.8.1
Другие вопросы по тегам