【发布时间】:2019-01-25 22:24:21
【问题描述】:
我已经实现了一个聊天服务器客户端。我编写了以下 shell 脚本来动态获取服务器端口号:server.sh
javac -类路径。 com/chat/ChatConstants.java
javac -类路径。 com/chat/ChatServer.java
echo 输入服务器端口号
读取 $1
java com.chat.ChatServer $1
这是我试图将参数传递给的 java main 方法:
public static void main(String args[]) {
// The default port number.
int portNumber = 8888;
if (args.length < 1) {
System.out.println("Chat server is up on " + portNumber);
} else {
portNumber = Integer.valueOf(args[0]).intValue();
System.out.println("Chat server is up on " + portNumber);
}
}
但是,打印的端口号始终是默认端口,即8888。当我运行java程序时,如下所示
java com.chat.ChatServer 2727
cmd line args被正确获取,服务器端口设置为2727。
我似乎在 shell 脚本中做错了什么。我什至尝试用引号传递参数,如下所示:
java com.chat.ChatServer "$1"
命令提示符立即关闭。
请帮忙
【问题讨论】:
-
不要将变量命名为
$1。这在 shell 中已经有了意义。 -
$1这一行理论上是不需要的,$1指的是default的第一个参数。
标签: java shell sh command-line-arguments