从 shell 脚本输入传递 java 主要方法参数
Pass java main methods arguments from shell script input
我实现了一个聊天服务器客户端。我编写了以下 shell 脚本来动态获取服务器端口号:server.sh
javac -classpath . com/chat/ChatConstants.java
javac -classpath . com/chat/ChatServer.java
echo Enter server port number
read
java com.chat.ChatServer
这是我试图将参数传递给的 java 主要方法:
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 行参数已正确获取,服务器端口设置为 2727。
我似乎在 shell 脚本中做错了什么。我什至尝试用引号传递参数,如下所示:
java com.chat.ChatServer ""
命令提示符立即关闭。
请帮忙
您的脚本应该是:
read PORT
java com.chat.ChatServer $PORT
</code> 是一个特殊变量,它保存传递给 shell 脚本的第一个命令行参数。</p>
<p>您需要<code>read
您的输入到不同的变量。
编辑:
只是旁注,您可以使用 read -p "Enter server port number" P
打印提示,而无需使用 echo
。
我实现了一个聊天服务器客户端。我编写了以下 shell 脚本来动态获取服务器端口号:server.sh
javac -classpath . com/chat/ChatConstants.java
javac -classpath . com/chat/ChatServer.java
echo Enter server port number
read
java com.chat.ChatServer
这是我试图将参数传递给的 java 主要方法:
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 行参数已正确获取,服务器端口设置为 2727。
我似乎在 shell 脚本中做错了什么。我什至尝试用引号传递参数,如下所示:
java com.chat.ChatServer ""
命令提示符立即关闭。
请帮忙
您的脚本应该是:
read PORT
java com.chat.ChatServer $PORT
</code> 是一个特殊变量,它保存传递给 shell 脚本的第一个命令行参数。</p>
<p>您需要<code>read
您的输入到不同的变量。
编辑:
只是旁注,您可以使用 read -p "Enter server port number" P
打印提示,而无需使用 echo
。