2017-04-16 33 views
0

文字列パスを定義して問題が発生したmatlab関数に渡したいと思います。Matlab bashの引数としてパス文字列を渡す

私は自分の関数にその変数を渡すためにbashスクリプトで宣言された文字列変数(この場合はパス)を渡そうとしています。例えば

var=/usr/local/ 
matlab -nosplash -nodesktop -nojvm -r "my_function($var)" 

私はエラーました:

-bash: syntax error near unexpected token `(' 

これを解決するには、私が試した:私はオンラインで見つける標準的な参考文献で見つけるものではありません

var=/usr/local/ 
matlab -nosplash -nodesktop -nojvm -r "my_function\($var\)" 

を。かかわらず、MathWorks社のMATLABを実行すると、私はエラーを取得:

var=/usr/local/ 
echo matlab -nosplash -nodesktop -nojvm -r "my_function\($var\)" 
を、出力があることに気づい:

Error: The input character is not valid in MATLAB statements or expressions. 

変数が正しく変換されたかどうかを確認するために、私はエコー試した

matlab -nosplash -nodesktop -nojvm -r "my_function(/usr/local/)" 

変数は文字列ではないため、エラーが発生し、私は試しました。

示している:

matlab -nosplash -nodesktop -nojvm -r "my_function('/usr/local/')" 

をだから、私は上記のコードを実行し、私はまだエラーが発生する:

Error: The input character is not valid in MATLAB statements or expressions. 

関数がパスに存在するかどうかを確認するために、私はPWDの両方試み、存在()はファイル用です。例えば

matlab -nodesktop -nosplash -nojvm -r "exist('my_function.m')" 

この場合は奇妙なことは、私は\(\)を必要としなかったし、そのファイルが現在のパスに存在する意味、2を返したことです。

私は試しにアイデアが不足しています。だから私はこれを解決する方法を教えてください。

+0

これはAA、bashの問題ではないMathWorks社のMATLABで質問 – crowdedComputeeer

答えて

1

私は、引数としてpathをとり、そのフォルダ(ls)にあるファイルのリストを出力する関数(myfunc)を作成しました。

$v='~/Documents' 
$v2="myfunc('$v')" 
$echo $v2 
myfunc('~/Documents') 
$matlab -nodisplay -nosplash -r $v2 

これは機能します。これを試して、あなたの出力を共有してもらえますか?

1

問題を再現できません。私はあなたが記述する最初のbashエラーを取得しません。間違いなく1つの問題は$ varのまわりにありません。

これは

var=/usr/local/ 
matlab -nosplash -nodesktop -nojvm -r "my_function('$var')" 

代わりに-rせず、代わりに次のようにこれを試してください(my_functionのは、MATLABパス内にあることを許可された)私の作品:

#!/bin/bash 
var=/usr/local/ 
path_to_my_function=/some/path 

matlab -nosplash -nodesktop -nojvm << EOF 
    addpath('${path_to_my_function}') 
    my_function('${var}') 
EOF 
関連する問題