Показать график Octave из скрипта оболочки

Показать график Octave из скрипта оболочки

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

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

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


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

Связанный контент