Ошибки запуска Matlab из сценария bash, вероятно, глупые

У меня есть следующий сценарий bash, вызывающий сценарий 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

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

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


person Mike    schedule 15.10.2014    source источник
comment
Мне не удалось воссоздать вашу ошибку на Matlab R2014a, Ubuntu 12.04.   -  person corahm    schedule 16.10.2014
comment
Если вы посмотрите на предпоследнюю строку вывода, кажется, что апострофы находятся в неправильных местах в ошибке. Не могли бы вы повторить командную строку в файле bash, чтобы убедиться?   -  person bdecaf    schedule 16.10.2014


Ответы (1)


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

Покопавшись дальше, я обнаружил, что модули настроены для c-shell и по умолчанию не настроены для bash. Хотя я думал, что Matlab загружен, это было не так. Мне пришлось вручную создавать модули для 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/

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

person Mike    schedule 17.10.2014