2012-04-16 158 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'