从 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