2012-04-02 34 views
1

matlabの引数として一重引用符を渡す方法を知りたいと思います。私は整数の文字列を取り、そこから配列を作成するbashスクリプトを実行しています。私はこれを行うことで、この機能をテストしたいMATLABのGUIでMatlabは一重引用符で囲みます

read -a array <<< "$1" 
for i in ${array[@]} 
do 
    echo $i 
done 

:bashのプログラムは、このようなものです

>> string = '1 2 3 4 5' 
>> unix(['script.sh ' string]) 

、それは

1 

ans = 

0 

を与えるが、それは印刷されません。配列全体をアウト! bashで私がしなければ...

script.sh '1 2 3 4 5' 

私は

1 
2 
3 
4 
5 

私の理論は、MATLABが数字に取っている、とのbashスクリプトはちょうど最初の引数を読んでいることを「1」にあり得ますアレイに印刷して印刷します。だから、どうにかして一重引用符で囲まれた文字列を渡すことができたら、それはうまくいくはずです。

答えて

2

Matlabのunix()コマンドはデフォルトでステータス変数のみを返すという問題があります。 the Matlab documentation for this functionに記載されている標準出力も返すように指示する必要があります。表示されている0の値はステータス変数で、0は「成功」を意味します。

は何がやりたいことは次のとおりです。また

[status, result] = unix(['script.sh ' string]); 
disp(result); 

、MATLABで書式設定文字列を説明するのに役立ちますし、文字列に単一引用符を追加する例が含まれてhere is a link。これは、文字列の中で一重引用符を連続して2回繰り返すことで実現されます。したがって、 '' ''は'を返します。なぜなら2つの外側シングルクォートの中に2つの連続したシングルクォートを配置しているからです。これは、二重引用符を生成するキーボード上の二重引用符キーストロークを使用する場合とは異なります。したがって、配列文字列を次のように書くことができます。

>> string = '''1 2 3 4 5''' 
string = '1 2 3 4 5' 
+0

元の投稿を見ると、1に戻っていることがわかります。私はこの技術は、あなたがstdoutを保存することを計画している場合に主に使用されると思います。しかし、私はbashスクリプトに一重引用符を渡す方法が必要です。 –

+0

私はあなたがハハを編集したのと同じように投稿しているのを見ました。 –

関連する問題