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

2 次查看(过去 30 天)
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

回答(3 个)

David
David 2012-9-4
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 个评论
gbernardi
gbernardi 2012-9-6
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 2015-5-8
this answer worked for me. i had seen this answer before but without the quotes. in my case, i needed them. thanks!

请先登录,再进行评论。


Walter Roberson
Walter Roberson 2011-2-27
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 2011-2-27
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 个评论
Walter Roberson
Walter Roberson 2011-2-28
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 2011-2-28
@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

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Get Started with MATLAB 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by