1

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

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

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

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

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

1 ответ1

2

Я пытаюсь воспроизвести вашу проблему, но это было невозможно. Я сделал это тестовые файлы 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 с помощью команды octave -q oct.txt & он ведет себя так, как предполагается:

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

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


  • GNU bash, версия 4.3.11
  • GNU Octave, версия 3.8.1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .