通过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]
这样可以了吧?
分享到:
2009-12-01 11:02
浏览 8036
评论