How do I pass a shell script variable as an argument to a matlab function?

조회 수: 39 (최근 30일)
I have a function 'main.m' that I want to accept a file path as input in a shell script.
P=/path/to/file.csv
matlab -r main($P)
or simply:
matlab -r main('/path/to/file.csv')
I have 'main.m' written as a function with no output. e.g.:
function main(filePath)
% code
end
I'm not sure if there are errors in the function declaration, the script syntax or both for this purpose. Any guidance is appreciated! Running MATLAB R2017a
  댓글 수: 2
Geoff Hayes
Geoff Hayes 2018년 3월 15일
Matthew - what is your operating system? On my Mac, I need to enclose the statement (that I wish to execute) in double quotes
/Applications/MATLAB_R2014a.app/bin/matlab -nodisplay -r "main('hello')"
Do you need to do the same? If you are still observing an error then please copy and paste the full error message to this question.
Matthew Thompson
Matthew Thompson 2018년 3월 15일
Actually that did exactly what I needed! I'm using Linux. I didn't try double quotes before because I must have misunderstood the doc page on command line input saying to exclude double quotes on MATLAB functions or scripts. Here's my final working shell code:
P=\'/path/to/file.csv\'
matlab -nodisplay -r "main($P)"

댓글을 달려면 로그인하십시오.

채택된 답변

Geoff Hayes
Geoff Hayes 2018년 3월 16일
The statement being passed to matlab needs to be in double quotes
/Applications/MATLAB_R2014a.app/bin/matlab -nodisplay -r "main('hello')"
or
matlab -nodisplay -r "main($P)"
  댓글 수: 3
Geoff Hayes
Geoff Hayes 2018년 3월 16일
Hmmm...perhaps this is for newer versions of MATLAB (the documentation is for R2018a). My version, R2014a, says
matlab -r "command" starts MATLAB and executes the specified MATLAB command. Include the command in double quotation marks ("command"). If command is the name of a MATLAB function or script, do not specify the file extension. To separate multiple statements, use semicolons or commas.
So perhaps newer versions don't require the double quotes. Which version of MATLAB are you using?
Matthew Thompson
Matthew Thompson 2018년 3월 16일
Ah, that's a good point. I didn't see that it was for R2018a. I'm using R2017a but will remember that if I download the update.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Startup and Shutdown에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by