通过shell教本给java传参数,总是被空格断开(我的目的是接受带空格的参数
)
[code]#!/usr/bin/ksh # PARAMS=""; while getopts dek:f:t:vh OPTION do case $OPTION in d | e | v | h) PARAMS=$PARAMS" -$OPTION" ;; k) PARAMS=$PARAMS" -k$OPTARG"; ;; f | t) PARAMS=$PARAMS" "\""-"$OPTION$OPTARG\"; ;; \?)echo "Illegal Paremters" exit 1;; esac done echo $PARAMS #$JAVA_HOME/bin/java MyTEST $PARAMS
MyTEST{
public static void main(String args[])
{
...
for (int i = 0; i < args.length; i++) {
if (args[i].startsWith("-d"))
dec = true;
else if (args[i].startsWith("-e"))
enc = true;
else if (args[i].startsWith("-f"))
file_name = args[i].substring(2, args[i].length());
else if (args[i].startsWith("-k"))
key = args[i].substring(2, args[i].length());
else if (args[i].startsWith("-t"))
text = args[i].substring(2, args[i].length());
else if (args[i].startsWith("-a"))
algorithm = args[i].substring(2, args[i].length());
else if (args[i].startsWith("-v"))
verbose = true;
else if (args[i].startsWith("-h"))
usage();
else
System.out.println("Unknow args:" + args[i]);
}
...
}
}[/code]
运行shell脚本 给参数 "abc 00", java接受到两个参数 "abc和00"
怎么回事?
关于从shell给Java传参数的问题 abc 00有空格,参数是以空格间隔的 |
关于从shell给Java传参数的问题
其实你应该发在shell版,因为不是Java的问题:)
把双引号一起赋值给PARAMS和写成"$PARAMS"是不等价的。
不知道下边的这个是不是符合你的要求。
[code] #!/usr/bin/ksh PARAMS=""; while getopts dek:f:t:vh OPTION do case $OPTION in d | e | v | h) PARAMS=$PARAMS" -$OPTION" ;; k) PARAMS=$PARAMS" -k$OPTARG"; ;; f | t) PARAMS=$PARAMS\ -$OPTION$OPTARG; ;; \?) echo "Illegal Paremters" exit 1;; esac done echo $PARAMS $JAVA_HOME/bin/java MyTEST "$PARAMS" [/code]
关于从shell给Java传参数的问题
按照你的做法,所有命令行参数将作为一个参数传递给java啦!
除非我改一改java中的参数处理方式。
还有更好的方式吗?
看来误会你的意思了。 [code] #!/usr/bin/ksh PARAMS=""; while getopts dek:f:t:vh OPTION do case $OPTION in d | e | v | h) PARAMS=$PARAMS" -$OPTION" ;; k) PARAMS=$PARAMS" -k$OPTARG"; ;; f | t) PARAMS=$PARAMS\ \"-$OPTION$OPTARG\"; ;; \?) echo "Illegal Paremters" exit 1;; esac done echo $PARAMS eval $JAVA_HOME/bin/java MyTEST $PARAMS [/code] 这样可以了吧?