Если я вызываю 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 &
она ведет себя так, как и предполагалось:
- сценарий начинаетсяоктавав фоновом режиме и продолжается
- в конце концов сценарий заканчивается, оставляя живыми октавные окна
К сожалению, окнаоктаваявляетсязамороженныйот pause
командования и не очень полезны.
- GNU bash, версия 4.3.11
- GNU Octave, версия 3.8.1