2014-10-15 1 views
2

я следующий Баш скрипт, вызывая сценарий MatLab ниже:Ошибки запуск Matlab с Баш скрипт ... вероятно, глупый

#!/bin/bash -x 

var1=HelloWorld 
var2=1:4 

matlab -nosplash -nodisplay -r "testtest('$var1', $var2), exit" 

и

function testtest(in1, in2) 
if ischar(in2) 
    in2 = str2num(in2) 
end 

in1 
total = sum(in2) 

return 

я получаю следующие ошибки (кажется, не зависит от функции, я пытаюсь позвонить):

+ var1=HelloWorld 
+ var2=1:4 
+ matlab -nosplash -nodisplay -r 'testtest('\''HelloWorld'\'', 1:4), exit' 
MATLAB_MOD_VERSION: 
MATLAB_VERSION: R2014a 
LM_LICENSE_FILE (before Matlab is loaded) : 
LM_LICENSE_FILE (after Matlab is loaded) : #@# 
************************************************************** 

... Matlab load text ... 

************************************************************** 
Executing: /app/matlab/R2014a/bin/matlab -nosplash -nodisplay -r testtest('HelloWorld', 1:4), exit 
/app/matlab/R2014a/bin/matlab -C#@# -nosplash -nodisplay -r testtest('HelloWorld', 1:4), exit 
/app/matlab/R2014a/bin/matlab: eval: line 1682: syntax error near unexpected token `)' 
/app/matlab/R2014a/bin/matlab: eval: line 1682: `exec "/work1/app/matlab/R2014a-gcc/bin/glnxa64/MATLAB" -C#@# -nosplash -nodisplay -r "testtest('HelloWorld'," 1:4), exit' 
/app/matlab/R2014a/bin/matlab: line 1682: warning: syntax errors in . or eval will cause future versions of the shell to abort as Posix requires 

(Обратите внимание, что я заменил номер лицензии с # @ #, выше) Мысли?

Редактировать: Кажется, что это не похоже на пробелы в двойных кавычках. Если я избавлюсь от пробелов, это сработает, но я хочу сказать, что есть способ сделать эту работу с пробелами ... Наверное, для меня это не критично. Я думаю, что это связано с моим использованием одиночной/двойной цитаты. Я искал вокруг, и насколько я могу судить, я делаю все правильно ...

+0

Я не смог воссоздать вашу ошибку на Matlab R2014a, Ubuntu 12.04. – corahm

+0

Если вы посмотрите на вторую на последнюю строку вывода, кажется, апострофы ошибаются в ошибке. Не могли бы вы повторить командную строку в файле bash, чтобы убедиться? – bdecaf

ответ

0

Я также думал, что цитаты были отключены, посмотрев на эхо.

После того, как я понял, что модули установлены для c-оболочки, они не настроены по умолчанию для bash. Хотя я думал, что Матлаб был загружен, это было не так. Мне пришлось вручную установить модули для bash, а оттуда код выше работал нормально.

Код источника и загрузить модуль был:

. /etc/profile.d/modules.sh 
modules load matlab/R##### 

Где ##### была версия Matlab. Это будет зависящим от системы, как я понимаю вещи.

Первичная ссылка: http://www.linuxquestions.org/questions/programming-9/script-executing-problem-module-command-not-found-761592/

Спасибо за вашу помощь. Я новичок в сообществе ... Я нашел много ответов на прошлые вопросы здесь!

Смежные вопросы