Я пытаюсь создать bash-скрипт, который будет общаться с Java-программой, которая ожидает мои команды через bash.Java-программа работает как сервер с очень ограниченным графическим интерфейсом, поэтому я работаю над созданием базового пользовательского интерфейса, который добавит к нему функциональность, и любая помощь по этой теме была бы полезной.
я пытался запустить его в настоящее время:
INPUTFD=258
#exec "$INPUTFD"> >(exec java -Xmx512M -Xms512M -jar server.jar)
с такими командами, как
(echo "kick ${user}") >&"$INPUTFD"
и той, что я использую сейчас
java -Xmx512M -Xms512M -jar server.jar & echo "Started"
pid=$!
, но я могуЗдесь нет в Google ничего, что могло бы помочь мне использовать echo или что-то в этом роде
Я думал, что труба может работать, но я думаю, что мне придется переместить большую часть скрипта в другой файл, чтобыиспользовать канал, который, как мне кажется, больше не работает с моими эхо-командами в скрипте, поэтому я открыт для любых идей, спасибо vzybilly
EDIT : (secondвремя набирать это, извините, если не все это имеет смысл сейчас) После Google и размышления над идеей я нашел лучший способ поставить вопрос.Скрипт (теперь должен называться основной программой или основным скриптом) будет взаимодействовать с пользователем, и в зависимости от того, что пользователь говорит основной программе, он сообщит 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
Мне еще предстоитпройти через жесткий тест, но он должен работать