2015-05-14 32 views
0

我想運行一個帶有指定參數設置的Java應用程序,其中一些參數將來自列表迭代。 這可能是正確的方法?非常感謝!獲取SHELL腳本中命令內的列表元素

outs="/home/user/this.vcf /home/user/that.vcf /home/user/simulation/control.vcf" 
arr=($outs) 

ending=3 

for ((i=1;i<=ending;i++)); do 
java -Xmx32g -jar /home/user/something.jar \ 
-o $arr[i] \ 
done 
+0

你想用所有參數或每個參數運行一次java命令嗎? –

+0

3運行一個參數,它有3個不同的值。所以我想運行它3次。 – szusz

回答

0

您缺少括號。此外,注意外殼數組是從零開始,所以你for語句需要修改:

for ((i=0;i<ending;i++)); do 
java -Xmx32g -jar /home/user/something.jar \ 
-o ${arr[i]} \ 
done 
1

你不需要硬編碼數。只需迭代像這樣的數組:

outs=("/home/user/this.vcf" "/home/user/that.vcf" "/home/user/simulation/control.vcf") 

for word in "${outs[@]}"; do 
    java -Xmx32g -jar /home/user/something.jar -o "$word" 
done 
+1

更好的辦法是正確使用數組(以便能夠處理具有空格的文件)。 –

+0

謝謝,好點。它被編輯。 – anubhava

+0

好吧,我會更新我的答案,我沒有告訴一些事情。我有3個參數(我不想全部寫出來讓我的帖子(和代碼)在這裏更簡單,但我應該有),我必須重新參數化3次,這就是爲什麼我想解決這個問題辦法。 – szusz