質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.99%

shell scriptからmatlabスクリプトの実行

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 798

tachi-as

score 6

 前提・実現したいこと

shell scriptからmatlabのスクリプトを起動するプログラムを作っています。
下記のコードでpythonコードの実行まではうまくいき,最後の行の"${CMD[@]}"でエラーが発生しています.

 発生している問題・エラーメッセージ

./decode.sh: line 37: matlab: コマンドが見つかりません

 該当のソースコード

#usr/bin/sh
run_preprocessing(){
    subj_id=$2
    echo "python ./python/write_preprocessBatch.py ${subj_id}"
    python ./python/write_preprocessBatch.py ${subj_id}
    echo "python ./python/write_executeBatch.py ${subj_id} preprocess"
    python ./python/write_executeBatch.py ${subj_id} preprocess

    cd ${batch_path}
    CMD=(matlab "-nodisplay -r 'executeBatch_${subj_id};exit'")
    "${CMD[@]}"
}

 試したこと

①terminalからmatlabが起動できることを確認しました.
↓↓↓↓↓↓↓↓↓↓ここから実行例
$ matlab
Warning: No display specified.  You will not be able to display graphics on the screen.
Warning: No window system found.  Java option 'Desktop' ignored.

< M A T L A B (R) >
Copyright 1984-2013 The MathWorks, Inc.
R2013a (8.1.0.604) 64-bit (glnxa64)
February 15, 2013

No window system found.  Java option 'Desktop' ignored.

To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.
↑↑↑↑↑↑↑↑↑↑ここまで実行例

②terminalでcd ${batch_path}に移動して,matlab -nodisplay -r 'executeBatch_${subj_id};exit'が実行されることを確認しました.
こちらでは別のエラーが発生しているものの,matlabコマンドの実行はできているように見えます.

↓↓↓↓↓↓↓↓↓↓ここから実行例
$ matlab -nodisplay -r 'executeBatch_sub02_post;exit'

< M A T L A B (R) >
Copyright 1984-2013 The MathWorks, Inc.
R2013a (8.1.0.604) 64-bit (glnxa64)
February 15, 2013

To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.

Initialising batch system... done.
Warning: Load failed: '001_preprocess_sub02_post.m' 

In spm_jobman>load_jobs at 331
In spm_jobman at 143
In executeBatch_sub02_post at 6 
Warning: No batch job found in '001_preprocess_sub02_post.m' 
In spm_jobman>load_jobs at 343
In spm_jobman at 143
In executeBatch_sub02_post at 6 
Error using spm_jobman (line 246)
No valid job.

Error in executeBatch_sub02_post (line 6)
spm_jobman('run', '001_preprocess_sub02_post.m', 'c')
↑↑↑↑↑↑↑↑↑↑ここまで実行例

 補足情報(FW/ツールのバージョンなど)

MacOSからsshでCeotOSの計算機サーバにアクセスし,そこから実行しようとしています.

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • t_obara

    2018/08/23 17:35

    terminalからというのは、ssh経由でterminalから手動で実行すると動作するが、手動部分をシェルスクリプトにするとエラーが出るという意味でしょうか?

    キャンセル

  • tachi-as

    2018/08/23 17:58

    はい.その通りです.

    キャンセル

回答 1

checkベストアンサー

0

./decode.sh: line 37: matlab: コマンドが見つかりません

エラーコードとmatlab自体が動作することから推察する限りは、shell内でmatlabまでのpathが通ってないだけではないでしょうか?

CMD=(matlab "-nodisplay -r 'executeBatch_${subj_id};exit'")

$ which matlab で得られたフルパスを記載してみてはいかがでしょうか?


which matlab で得られたパスが /hoge/bin/matlab だった場合に下記に変更してみる

CMD=(/hoge/bin/matlab "-nodisplay -r 'executeBatch_${subj_id};exit'")

または、下記でもできそうな気もしますが複数matlabがインストールされていたりすると意図しない動きになる可能性もあるので参考程度で記載しておきます

CMD=(`which matlab` "-nodisplay -r 'executeBatch_${subj_id};exit'")

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/23 21:41

    ご指摘のとおり編集して実行したら解決しました!
    基本的なことなのかもしれませんが,非常に助かりました!ありがとうございます!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.99%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる