2014-10-09 83 views
3

參數:傳遞可變數量的bash命令行參數的MATLAB函數傳遞給一個bash腳本可以被傳遞到MATLAB功能通過以下方式

#!/bin/bash 

matlab -nodesktop -nosplash -nodisplay -r "my_function('$1','$2')" 

但如果是如何做到這一點我不知道要先驗的論點數量?所以我想做這樣的事情:

#!/bin/bash 

matlab -nodesktop -nosplash -nodisplay -r "my_function('$1',...,'$N')" 

在哪裏我不知道什麼數字N等於先驗。

我覺得你可以用for循環創建一個包含'$1',...,'$N'的字符串,並將整個字符串傳遞給上述命令。但是沒有更簡潔的方法嗎?

FIW,我不是流利的bash。所以如果循環是唯一的方法,請告訴我如何做到這一點?

編輯

我設法想出一個解決我的問題:

#!/bin/bash 

INPUT="" 
for var in "[email protected]" 
do 
    INPUT=$INPUT"'"$var"'," 
done 
INPUT=${INPUT%?} 

matlab -nodesktop -nosplash -nodisplay -r "my_function($INPUT)" 

是不是有更簡單/更短的方式做到這一點?

+0

在什麼時間點你會知道N的價值? – 2014-10-09 16:08:37

+0

從來沒有。問題是我正在用MATLAB開發一個程序。主MATLAB函數的輸入參數數量可能會隨時間而改變。我不想修改每次我決定添加另一個輸入參數時啓動我的MATLAB程序的bash腳本。 – Aeronaelius 2014-10-09 16:14:45

+1

+1爲正確的拼寫 - 'MATLAB'而不是'matlab'這是在這裏被廣泛用於堆棧溢出。對不起,雖然我沒有有用的評論。 – Divakar 2014-10-09 16:20:40

回答

3

here獲得靈感:

#!/bin/bash 

INPUT=$(printf "'%s'," "[email protected]") && INPUT=${INPUT%,} 

echo matlab -nodesktop -nosplash -nodisplay -r "my_function($INPUT)" 

輸出:

$ ./test.sh one two three 
matlab -nodesktop -nosplash -nodisplay -r my_function('one','two','three') 

這是一個有點短,至少。

相關問題