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 中查找有关 Startup and Shutdown 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by