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