2012-04-16 2 views
1

j'ai un simple programme java qui imprime simplement les arguments passésastérisque Échapper en script shell lorsque le programme Java est appelé

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

J'invoque ce programme java à partir d'un script shell setupTest.sh comme celui-ci java CmdArgsTest $*

Lorsque j'appelle setupTest.sh avec les arguments * est remplacé par tous les noms de fichiers dans le répertoire.

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

Même j'échapper * avec \ mais l'argument est passé est \* et non * seul. J'ai également essayé de mettre * entre guillemets mais cela n'a pas aidé.

Je ne peux pas exécuter le script en tant que java CmdArgsTest "$*" car alors toute la commande passe une grande chaîne.

Toute aide sera grandement appréciée.

Remerciez, Saurabh

Répondre

0

try échapper au dollar ($) signe

java CmdArgsTest "\$*" 

ou en utilisant des guillemets simples

java CmdArgsTest '$*' 

va de même pour l'autre invokation:

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