Applying Matlab variables in a UNIX command
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I am building a MATLAB script to generate many input files with unique file names, then to feed these files to a program that can only be run from the command line (UNIX, I'm on a Mac). One of my final barriers is to be able to use MATLAB variables in the UNIX command line. This is a very basic example, but for instance if I execute the following code:
folderName = test;
unix('cd /path; mkdir folderName')
the folder is created with the name "folderName" rather than test, whereas I was hoping for the path /path/test to be created. Any ideas?
Thank you very much!
0 Kommentare
Antworten (2)
Thorsten
am 18 Jan. 2016
Bearbeitet: Thorsten
am 18 Jan. 2016
You can create the folder in Matlab as follows:
path = '/User/foobar/Matlab/xxx';
folder = 'test';
mkdir(fullfile(path, folder))
2 Kommentare
Thorsten
am 19 Jan. 2016
Bearbeitet: Thorsten
am 19 Jan. 2016
You have to write the text file filename_var1_var2.txt from Matlab, and then call your program from the command line or from Matlab using system. What's the format of filename_var1_var2.txt? Do you have problems generating this file from Matlab? Have a look at Walter's answer that shows the principle way of how to do it.
Walter Roberson
am 18 Jan. 2016
folderName = 'test';
unix( sprintf('cd /path; mkdir ''%s''', folderName) )
If you want to live dangerously:
folderName = 'test';
unix( ['cd /path; mkdir ', folderName] )
which would lead you to endless fun if the folderName contained any shell special characters.
4 Kommentare
Walter Roberson
am 21 Jan. 2016
Bearbeitet: Walter Roberson
am 21 Jan. 2016
Your PATH does not include your current directory. You could add that to the PATH, or you could change your command to
cmd = 'cd /Users/kevin/Desktop/Sims/PulseSims;./simpson simpsonInput';
Something in your program must have reset your PATH, or else you have started MATLAB in an odd way. For me on OS-X, starting by clicking the icon in the dock, I get
/Applications/MATLAB_R2014a.app/sys/java/jre/maci64/jre/bin:/Library/Frameworks/Maple.framework/Versions/2016/bin.APPLE_UNIVERSAL_OSX:/Library/Frameworks/Maple.framework/Versions/2016/jre.APPLE_UNIVERSAL_OSX/bin/:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/MATLAB_R2014a.app/bin:/Applications/MATLAB_R2014a.app/bin/maci:/Applications/MATLAB_R2014a.app/sys/os/maci:/Applications/MATLAB_R2014a.app/bin/maci64:/Applications/MATLAB_R2014a.app/sys/os/maci64
If you are starting MATLAB from the command line on a Linux system then you would be invoking a shell script named "matlab" which should set the PATH and then invoke the MATLAB executable. It is not impossible that someone has mangled that script.
The only other reason I can think of that your PATH might be like that is if someone has changed the actual MATLAB executable to be suid or sguid : in such a case in order to prevent security problems, the operating system would automatically change to a restricted PATH very similar to the one you are seeing, ignoring any environment variables.
Siehe auch
Kategorien
Mehr zu Symbolic Math Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!