INPUTFD=258
#exec "$INPUTFD"> >(exec java -Xmx512M -Xms512M -jar server.jar)
使用类似以下命令:
(echo "kick ${user}") >&"$INPUTFD"
而我现在正在使用的
java -Xmx512M -Xms512M -jar server.jar & echo "Started"
pid=$!
但我在谷歌上找不到任何有助于使用echo或类似方法来帮助这里的内容。
我想使用管道可能会起作用,但我认为我必须将一大块脚本移动到另一个文件中使用管道,然后我的脚本中的echo命令似乎不再起作用,所以,我对任何想法都持开放态度。谢谢vzybilly
编辑:(第二次输入此内容,如果现在不是全部都有意义,很抱歉)在谷歌搜索和深入思考这个想法后,我发现了一个更好的提问方式。脚本(现在应称为主程序或主脚本)将与用户交互,并根据用户告诉主程序的内容告诉java程序某些东西,有时它将与用户输入相同,在其他情况下,它将是主程序自己根据用户对主程序说的内容制作的东西。主程序将处理两个输出和一个输入(终端双向,只有一种方式到java程序)
我认为可能有效的一种方法是在主脚本和java程序之间有一个文件和另一个脚本,另一个脚本将被命名为server_handler.sh(我们将其称为处理脚本),它的工作方式是在主脚本中像这样的命令来启动它:
server_handler.sh | java -jar server.jar
然后,当我们想从主脚本向服务器发送信息时,我们这样做:
echo "what we want to tell the sever" >> cmd.tmp
通过这种方式,处理程序脚本所做的一切就是从文件中读取并通过管道将其回显到Java程序中。我遇到的问题是,即使在读取时向文件添加了内容,如何让处理程序脚本知道它已经读取了什么或删除它已经读取的行?(有些命令会连续放入27次,在服务器运行后通常需要几分钟才能使用命令(否则无效),有时可能永远没有命令在当前运行的服务器上,或者要等好几天)。我可以在脚本中在终端对话时写入文件,因此主要脚本不难编写,但处理程序脚本中会有什么呢?
最终工作脚本:
run.sh:
#!/bin/bash
tail -f input.txt | java server.jar &
echo "Do Not Close This Window Or Press Enter Till Server Is Off Line,"
read -p " Doing So Will Force Close The Server, Please press enter when done."
主脚本调用:
gnome-terminal -x ./run.sh
向服务器发出命令:
echo "command to server" >> input.txt
我还没有经过严格测试,但它应该能够保持正常工作。