2010-07-23 15 views
5

Bir matlab komut dosyasına büyük bir bash komut kümesi koymaya ve değişkenlerimi (dosya yolları, parametreler gibi) oradan yönetmeye çalışıyorum. Ayrıca, bu iş akışının belirli adımlarda manuel müdahale gerektirdiğinden ve bunun için adım hata ayıklayıcısını kullanmak istediğim için de gereklidir.Matlab'ın içindeki bash kabuğunu kullanma

Sorun şu ki, matlabın kabuk kabuğu ile nasıl etkileşimde olduğunu anlamıyorum. Bash değişkenlerimi tanımlamak için system('source .bash_profile') yapamıyorum. Benzer şekilde onları elle tanımlayamıyorum ve bunları okuyamam, ör. system('export var=somepath') ve sonra system('echo $var') hiçbir şey döndürmez.

İçerideki matlab komut penceresindeki değişkenleri tanımlamanın doğru yolu nedir? .bash_profile sayfamdakilerin yanı sıra tanımladığım değişkenleri kullanacak komutların iş akışını nasıl oluşturabilirim?

+2

Bunun nasıl yapılacağını tam olarak bilmiyorum ama neden çalışmadığını söyleyebilirim. System() işlevini her çağırdığınızda, komut bittikten hemen sonra çıkan yeni bir kabuk yürütüyorsunuz. – frankc

cevap

6

Eğer, çevre değişkenleri ayarlanır yapmanız gereken MATLAB'ta Bunu yaparsanız:

>> setenv('var','somepath') 
>> system('echo $var') 
+0

Nihayet bir (pseudo-) 'setenv' uyguladıklarını bilmek güzel. – Jonas

+0

@Jonas: 6.x'den beri bunu yaşadılar ... – rubenvb

+0

@rubenvb: Gerçekten mi? Sanırım aradığım son sefer bu işlev 5.3 olmuş olmalı. Zaman uçar. – Jonas

3

çağırır Bash almak için bir giriş kabuğu olarak ~/.bash_profile kaynaklı ve bir yürütmek için -c seçeneğini kullanın Bir seferde kabuk komutları grubu.

# in Terminal.app 
man bash | less -p 'the --login option' 
man bash | less -p '-c string' 
echo 'export profilevar=myProfileVar' >> ~/.bash_profile 

# test in Terminal.app 
/bin/bash --login -c ' 
echo "$0" 
echo "$3" 
echo "[email protected]" 
export var=somepath 
echo "$var" 
echo "$profilevar" 
ps 
export | nl 
' zero 1 2 3 4 5 


# in Matlab 
cmd=sprintf('/bin/bash --login -c ''echo "$profilevar"; ps'''); 
[r,s]=system(cmd); 
disp(s); 
İlgili konular