2012-03-12 19 views
1

ちょっと、私はいくつかのファイルを読むことに基づいて文字列をエコーするbashコマンドを持っています。このように簡単に言ってくださいmatlabで外部スクリプトを呼び出して出力をキャプチャする

for line in `cat file` 
do 
if [ "$line" == "IwantThisLine" ] 
then 
echo "True" 
fi 
done 

そして、私はそれを独自のスクリプトとして保存しました。それはreadRef.shと呼ばれます。だから私はmatlabでそれを呼び出すと、変数に出力するものを保存したい!私はそれを行う方法については完全にはわかりませんが、システム()上でevalc()を使用するとエラーが発生するようです。しかし、引用符をつぶすのは私だけかもしれません。

私は「bamfileは」bamfileのパスに単なる文字列である変数である

evalc(system(['./readRef.sh ' bamfile'])) 

のようなものを試してみました。

このエラーが発生します。

偶然、私がmatlab変数を設定したいものである「hg18」を吐き出します。

+1

スクリプトを実行しようとした 'evalc' /' system'コマンドとそれに伴うエラーメッセージを提供できますか? (別に - bash(つまり 'sh/readRef.sh'?)の実行時にスクリプト自体は動作しますか?) –

+0

' smplBamFile'のように見える文字列ではありません。 'class(['/ readRef.sh' smplBamFile])'を実行しますか? –

+0

それは 'char'と言います。 –

答えて

3

わかりました。私はあなたが必要とは思わないevalc

[status, result] = system('echo True; echo "I got a loverly bunch of coconuts"') 

そしてresultは、だから

True 
I got a loverly bunch of coconuts 

を行います:

[status, result] = system(['./readRef.sh ' smplBamFile]) 

evalcが働いていない理由は、その入力を必要とすることであるsystem docsあなただけ行うことができますを読みます文字列にのMatlab式があるが、結果はである。。

あなたは試みることができる:

evalc("system(['./readRef.sh ' smplBamFile])") 

は、私は、文字列としてsystem(...)に渡している方法を参照してください?

+0

はいシステム(...)を文字列として渡してみましたが、残念ながら予期しないエラーが出ました。私はあなたが言ったことを試してみて、感謝します。 –

+1

あなたも文字列として渡そうとした場合は、その試行とエラーを質問に入れてください。あなたが質問をするときはいつでも、すべてのあなたの試行*とそれに関連するエラーメッセージを入れてください - これはあなたを助けようとする人に大いに役立ち、あなたの問題が誤って何かであると誤認するのを防ぎます。 –

0

system(...)は、出力されたコマンドの戻りコードを返します。

[~, output] = system(...) 
tes = evalc(output); 
関連する問題