シェルスクリプトからオクターブプロットを表示する

シェルスクリプトからオクターブプロットを表示する

何かをプロットするために Octave を呼び出す場合、実行を継続してプロットを表示するには対話型プロンプトが必要です。

コマンドラインから実行する場合、--persistオプションにより、すべての Octave コマンドが実行された後も Octave が強制的に開いたままになり、プロットを表示および操作できるようになります。

--persist --eval または FILE からの読み取り後に対話型になります。

ただし、非対話型シェル スクリプトから 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()または を追加し、コマンドで octave を呼び出すと、想定どおりに動作します。 pause(10)oct.txtoctave -q oct.txt &

  1. スクリプトが始まりますオクターブバックグラウンドで継続
  2. 最終的にスクリプトはオクターブウィンドウを残して終了します

残念ながら、オクターブ凍ったコマンドからはpause得られず、あまり役に立ちません。


  • GNU bash、バージョン 4.3.11
  • GNU Octave バージョン 3.8.1

関連情報