2012-04-16 50 views
1

我有一個簡單的Java程序剛剛打印參數傳遞在shell腳本轉義星號時

public class CmdArgsTest { 
    public static void main(String[] args) { 
     for(String arg : args){ 
      System.out.println(arg);  
     } 
    } 
} 

我從一個shell腳本setupTest.sh調用該Java程序是這樣 java CmdArgsTest $*

Java程序調用

當我使用那些參數調用setupTest.sh*被目錄中的所有文件名取代。

setupTest.sh -tt oracle -tn test_ora -sqlQuery "select * from myTable" 

即使我逃出*\但傳遞的參數是單獨\*而不是*。我也試過把*放在引號中,但是沒有幫助。

我無法像java CmdArgsTest "$*"那樣運行腳本,因爲所有的命令都傳遞了一個大字符串。

任何幫助將不勝感激。

感謝, SAURABH

回答

0

嘗試逃離美元($)簽署

java CmdArgsTest "\$*" 

,或者使用單引號

java CmdArgsTest '$*' 

同樣適用於其他invokation:

setupTest.sh -tt oracle -tn test_ora -sqlQuery 'select * from myTable'