Can I call a bash shell script (using cygwin) through matlab?
Ältere Kommentare anzeigen
I want to call a bash shell script glider_merge.sh from glider_boat_check.m. I need to pass arguments such as location, unit, and year. Do I have to define these in the shell script or can I pass them through matlab?
The glider_merge.sh script merges science and flight data into a .dat file and .mat file. I want to just be able to open glider_boat_check.m, press run which executes glider_merge.sh and then glider_boat_check.m opens the .mat output file and does more diagnostics.
I am (brand) new to UNIX and haven't had much experience with matlab either. Any suggestions would help greatly.
Antworten (1)
Titus Edelhofer
am 1 Jun. 2015
Hi,
you can use the system function to call your shell script. Something like
location = 'Germany';
system(['yourshellscript.sh ' location]);
This way you pass location as parameter to the shell script.
Titus
4 Kommentare
Brita Irving
am 2 Jun. 2015
Ken Atwell
am 3 Jun. 2015
Are 'location', 'unit', and 'year' MATLAB variables that are already chars? You may be to create a string and then call system on that string:
str = ['C:\cygwin64\bin\bash --login -c "C:/cygwin64/home/bkirving/gliders/ProcArchive/glider_merge.sh" ' location ' ' unit ' ' year];
system(str)
Titus Edelhofer
am 3 Jun. 2015
And use num2str(year), if year is a number (double) and not a string ...
Chris Endemann
am 31 Jan. 2019
Bearbeitet: Chris Endemann
am 31 Jan. 2019
I was just working from this solution, and found that the final answer is slightly incorrect. The final double quote should come after the input argument list, i.e.:
str = ['C:\cygwin64\bin\bash --login -c "C:/cygwin64/home/bkirving/gliders/ProcArchive/glider_merge.sh ' location ' ' unit ' ' year '"'];
system(str)
Kategorien
Mehr zu Entering Commands finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!