2013-06-03 116 views
3
Java應用程序

如果通過bash腳本通過對Arg的Java應用程序,而ARG包含空格,你怎麼可以讓Java應用程序看到整個字符串作爲ARG而不僅僅是第一個字?例如通過bash中通過以下兩個參數傳遞給的java:傳遞ARGS []與空間

var1="alpha beta zeta" 
var2="omega si epsilon" 

script.sh $var1 $var2 

(內側script.sh)

#!/bin/bash 
java -cp javaApp "[email protected]" 

(內側javaApp)

param1 = args[0]; 
param2 = args[1]; 

中的我的PARAM變量值javaApp越來越只有一行字,而不是整個線路:

"param1 is alpha" 
"param2 is beta" 

我能在javaApp改變,看看通過ARGS []作爲參數傳遞在整個字符串,而不只是它遇到的第一個字?

+0

使用下劃線代表空格。將下劃線轉換爲javaApp中的空白。 –

回答

7

的問題是你的shell腳本寫入的方式,而不是你的Java程序。

你需要引用的論據:

$ script.sh "$var1" "$var2" 

這些行:

script.sh "$var1" "$var2" 
1

,當你調用script.sh你應該用引號括參數

var1="alpha beta zeta" 
var2="omega si epsilon" 

不實際上包括var1var2中的引號的絃樂。

0

的問題是,你在呼喚script.sh時已經合併的變量(和一旦被合併了,沒有辦法再分割它們)。

這樣做:

var1="alpha beta zeta" 
var2="omega si epsilon" 

script.sh "$var1" "$var2"