ユーザー入力をオペランドとしてbashからMatlab関数を呼び出す方法

ユーザー入力をオペランドとしてbashからMatlab関数を呼び出す方法

matlab -nodesktop -nosplash -r "functionmat(var1,var2)"コマンドを呼び出す必要があるbashを使用してmatlabを実行したいと思います。たとえば、を実行できます。matlab -nodesktop -nosplash -r "functionmat(5,4)" これが有効な入力であれば動作します。いくつかのファイルを作成mfileこれらの操作のいずれかを実行します。

ただし、変数がユーザーが要求する入力になりたいので、ユーザーがスクリプトを変更することなく実行されるたびに異なります。ユーザーは要求を受け取ると、単に別の入力を入力します。

これは機能しません(何も起こりません):

#!/bin/bash
echo "Please variables 1 and 2:"
read var1 var2

matlab -nodesktop -nosplash -r "functionmat($var1,$var2)"

このような呼び出しmatlabも機能しません(数字が必要ですが、文字列型の入力を読み取っているのでバグと言います)。

matlab -nodesktop -nosplash -r "functionmat('$var1','$var2')"

この方法は機能しません(何も起こりません。ファイルは生成されません)。

sect1="\""
sect2="functionmat("
sect3=","
sect4=")"
sect5="\""

matlab -nodesktop -nosplash -r "$sect1$sect2$var1$sect3$var2$sect4$sect5"

誰もが動作する方法を知っていますか?

ベストアンサー1

最初の提案は正しく機能します。唯一のバリエーションは、変数を正しく入力したことを確認することです(カンマではなく空白で区切られます)。コードを少し変更して両方の変数の値を印刷し、コマンドを実行する代わりにコマンドを印刷すると、matlabコードが正しいことを証明できます。

#!/bin/bash
echo "Please variables 1 and 2:"
read var1 var2
echo "var1=$var1, var2=$var2."
echo matlab -nodesktop -nosplash -r "functionmat($var1,$var2)"

おすすめ記事