如果我调用 Octave 来绘制某些图形,它需要交互式提示来保持运行并显示图形。
从命令行运行时,该--persist
选项将强制 Octave 在执行所有 Octave 命令后保持打开,以便我可以看到和操作图表。
--persist 在 --eval 之后或从 FILE 读取之后进入交互状态。
但是,当我从非交互式 shell 脚本调用 Octave 时,它无法进入交互模式,不会对--persist
命令行选项做出反应,也不会对pause()
Octave 脚本内的命令做出反应。
如果从 shell 脚本调用,有没有什么方法可以让 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