从Shell脚本输入传递Java主要方法参数

时间:2018-08-19 16:35:19

标签: java shell sh command-line-arguments

我已经实现了聊天服务器客户端。我编写了以下shell脚本来动态获取服务器端口号:server.sh

  

javac -classpath。 com / chat / ChatConstants.java

     

javac -classpath。 com / chat / ChatServer.java

     

回显输入服务器端口号

     

读取$ 1

     

java com.chat.ChatServer $ 1

这是我试图将参数传递给的Java主要方法:

9
pppoe-Abrar
null
null
null
null
null
null
null
null

但是,打印的端口号始终是默认端口,即8888。当我按如下方式运行Java程序时

  

java com.chat.ChatServer 2727

正确获取了cmd行args,并将服务器端口设置为2727。

我似乎在shell脚本中做错了。我什至尝试通过引号将参数传递如下:

  

java com.chat.ChatServer“ $ 1”

命令提示符将立即关闭。

请帮助

2 个答案:

答案 0 :(得分:1)

您的脚本应为:

read PORT
java com.chat.ChatServer $PORT

答案 1 :(得分:0)

$1是一个特殊变量,它保存传递给shell脚本的第一个命令行参数。

您需要read输入到另一个变量。

编辑: 只是一个旁注,您可以不使用echo而使用read -p "Enter server port number" P打印提示。