Call a Unix script with MATLAB: how is it different from using Cygwin?

3 vues (au cours des 30 derniers jours)
gbernardi
gbernardi le 27 Fév 2011
Commenté : David le 8 Mai 2015
Hello everybody, i just subscribed to MATLAB central, even though i read you from years :)
My problem is the following: I am working with a free Automatic Speech Recognition toolkit, called HTK, which works both on Unix and Windows environment.
I work on a computer with Windows 7 (x64) and MATLAB 2010a installed and I tried to use the toolkit by calling the commands from both the Windows command line and from the Cygwin bash shell.
In both the cases it works but i realized that some commands work in Cygwin whereas they don't in Windows (i suppose it is because the toolkit was natively developed to be used in a Unix environment).
I then moved to MATLAB to call the different scripts.
The problems I noticed when calling the HTK functions from MATLAB using the dos command are (as expected) the same I get from the Windows command line.
So, I tried to use the command unix, expecting the positive results obtained with Cygwin, but instead the same thing happening with dos and the Windows command line occurs.
Thus, i guess that using unix in MATLAB is not the same as calling whatever command withing Cygwin.
I've never worked with unix programs before, so it might be a simple thing to work out. Nevertheless, i try to look for this problem both here and on other forums and i could find what i needed...
I hope I expressed my problem in a comprehensible way xD
Giuliano

Réponses (3)

David
David le 4 Sep 2012
I realize this thread is dead, but I have been looking to solve a very similar problem. The result I have settled on for my problem is to call cygwin's bash from the windows command line. The command call to cygwin's bash also includes the bash command I want to execute.
The syntax is the following. Please experiment per your purposes.
dos('C:\cygwin\bin\bash.exe --login -c "[command]"')
where the quantity [command] should be replaced per your need.
Hope this helps,
David
  2 commentaires
gbernardi
gbernardi le 6 Sep 2012
Hey David, thanks for the reply. Unfortunately I'm not working within the same environment anymore so I don't think I'll have the chance to check your solution... At the time, I just bypassed the issue by working on Linux directly.
What should I do about the "Accept this answer" issue?!
David
David le 8 Mai 2015
this answer worked for me. i had seen this answer before but without the quotes. in my case, i needed them. thanks!

Connectez-vous pour commenter.


Walter Roberson
Walter Roberson le 27 Fév 2011
See the documentation for the "unix" command:
The MATLAB software uses a shell program to execute the given command. It determines which shell program to use by checking environment variables on your system. MATLAB first checks the MATLAB_SHELL variable, and if either empty or not defined, then checks SHELL. If SHELL is also empty or not defined, MATLAB uses /bin/sh.

gbernardi
gbernardi le 27 Fév 2011
Hmmmm... Doesn't that only refer to the case when one runs MATLAB scripts in a Unix environment? I want to run unix scripts in a Unix environment (via Cygwin) using MATLAB.
But perhaps it's just me not being able to understand xD :S
  7 commentaires
Walter Roberson
Walter Roberson le 28 Fév 2011
The shell would definitely have to be the full path, not just the directory.
I do not have an operational Windows system to test with these days, sorry.
gbernardi
gbernardi le 28 Fév 2011
@Kaustubha: yes, the environment variable is correctly set.
@Walter: tried with full path "C:\cygwin\bin\bash.exe" and also with the login option "C:\cygwin\bin\bash.exe --login" (just to make an attempt) but nothing.
Well, if you guys have news just let me know! :D

Connectez-vous pour commenter.

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by