ข้อผิดพลาดในการเปิด 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

(หมายเหตุ ฉันแทนที่หมายเลขใบอนุญาตด้วย #@# ด้านบน) คิดบ้างไหม?

แก้ไข: ดูเหมือนว่าจะไม่ชอบช่องว่างภายในเครื่องหมายคำพูดคู่ ถ้าฉันกำจัดช่องว่างออกไป มันก็ใช้งานได้ แต่ฉันอยากจะบอกว่ามีวิธีที่จะทำให้สิ่งนี้ใช้ได้กับช่องว่าง... ฉันคิดว่าไม่สำคัญสำหรับฉัน ฉันคิดว่ามันเกี่ยวข้องกับการใช้เครื่องหมายคำพูดเดี่ยวหรือคู่ของฉัน ฉันค้นหาไปรอบๆ และเท่าที่ฉันสามารถบอกได้ ฉันกำลังทำสิ่งที่ถูกต้อง...


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