【发布时间】:2009-02-22 12:24:25
【问题描述】:
我想传递字符串“!changeme!”到命令行上的java程序,如:
java -cp "!AXIS2_CLASS_PATH!" ClientJava --userid admin --passwd "!changeme!"
使用 Windows XP、Java jdk 1.6.0_07。
AXIS2_CLASS_PATH 被正常替换,我假设由 java 运行时替换。但是 !changeme! 的密码!似乎也被替换为空字符串。我假设这个替换是某种 JVM 特性。
使用以下程序:
static int Run(String[] aArgs) {
for (String s: aArgs) {
System.out.println("arg: " + s);
}
return 0;
}
我得到以下结果:
"C:\Program Files\Java\jdk1.6.0_07\bin\java" -cp "!AXIS2_CLASS_PATH!"
ClientJava --userid admin --passwd "!changeme!"
arg: --userid
arg: admin
arg: --passwd
arg:
我需要按原样传递密码。我尝试了各种转义,但我没有找到我需要使用的东西。
任何人都可以提供有关如何执行此操作的提示吗?
Zach Scrivena 提供的解决方案是:
使用插入符号来转义感叹号。
java -cp "!AXIS2_CLASS_PATH!" ClientJava --xxx "^!changeme^!"
arg: --userid
arg: admin
arg: --passwd
arg: !changeme!
【问题讨论】:
-
你在什么环境下替换 !foo! ?我强烈怀疑这个问题与 Java 无关,与您所处的任何 shell 环境有关。
-
使用 Windows XP。 Windows 中没有任何东西可以进行这种替换。我相信它是 JVM,但如果有解决方案,我很高兴被证明是错误的。
标签: java command-line