1

У меня есть a.command, скрипт, который ожидает ввода пользователя (например, набирает что-то и затем нажимает return). Он зацикливается навсегда. Например, он сообщает пользователю, является ли его запись високосным годом, или это сервер Minecraft. Я получаю, как пользователь, как это:

open a.command

Попытка написать сценарий, который будет периодически действовать как пользователь, вводящий записи в этот сценарий.

Мне не повезло с чем-то вроде этого:

i=5;
while [ $i -gt 0 ]; do
  i=$(( $i - 1 )); sleep 10; # do this once every 10 seconds for i times
  {{send text to the script a.command in the newly opened window}}
done & open a.command > a.out; 

Не нужно выводить в a.out, я просто сохранял результаты в этом файле.

1 ответ1

0

Вместо того, чтобы осуществлять межпроцессное взаимодействие внутри цикла while, просто распечатайте в стандартный вывод и перенаправьте весь цикл в a.command.

Итак, ваш сценарий будет выглядеть примерно так:

i=5;
while [ $i -gt 0 ]; do
  i=$(( $i - 1 )); sleep 10; # do this once every 10 seconds for i times
  echo "Jan 1, 1970" # just echo or print your input here
done | a.command > a.out;

Обратите внимание на использование | символ вместо & в последней строке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .