#bash #rtx
#bash #rtx
Вопрос:
Извините, если это кажется глупым вопросом, но я только изучаю сценарии bash. Для школьного проекта нам нужно закодировать RTX, который работает в Unix. Он запускается как процесс в терминале и принимает вводимые пользователем данные, а затем выводит их на экран. Я хочу написать скрипт bash, чтобы проверить, что он может реагировать на множество быстрых пользовательских вводов без переполнения или сбоя.
Моя основная проблема заключается в том, что после запуска RTX скрипт bash останавливается на этой строке до завершения RTX и только тогда выводит цикл на терминал (вместо того, чтобы выводить его в RTX-приглашение, как я намереваюсь).
Я пытался запустить RTX в фоновом режиме, но это не сработало. Мне нужно найти способ перенаправить ввод в RTX, пока он все еще запущен с помощью скрипта bash. Поисковые запросы Google не выдали примеров, которые я понял / мог бы адаптировать. Приветствуется любая помощь.
#!/bin/bash
# declare STRING variable
STRING="RTX Worked =D"
#Start the rtx in a new process, stuck on this line until rtx terminates.
./main
#Somehow redirect io to the rtx.
for i in `seq 1 100`;
do
echo $i
echo " n"
done
echo $STRING
Ответ №1:
Вы можете запускать совместные процессы в bash, а затем отправлять команды совместному процессу по каналу.
смотрите руководство по Bash в подкоманде coproc
Прошло некоторое время с тех пор, как я это делал, и я потерял свои примеры, но что-то вроде
coproc RTX ./main
for i in 'seq 1 100`;
do
echo $i >amp;{RTX[1]}
done
Комментарии:
1. хах. прошло некоторое время, но это довольно недавнее дополнение к bash 🙂 (4 IIRC)
2. В моем возрасте довольно долго — несколько месяцев, а потом я забываю, что я делал