Аналогично этому вопросу, но по-другому важно: мне нужно запустить несколько заданий из сценария и запустить их в фоновом режиме. Затем, чтобы управлять ими или проверять их прогресс, мне нужно вывести их на передний план и разрешить ввод данных пользователем.
Что я сейчас делаю:
Начните кучу работ в цикле, например
for ip in $(cat ip-list.txt); do run-job.sh $ip &; done
Вывести индивидуальную работу на передний план, например, с
fg 1
Это выводит задание на первый план, однако есть две проблемы: я не могу предоставить пользовательский ввод - процесс не отвечает, как если бы процесс, получающий мой ввод, был сценарием, запустившим задание, а не самим заданием; также переменная $ ip отображается без оценки, то есть в точности как «$ ip», а не «192.168.1.34». Однако, когда я набираю 'jobs', я вижу все 10 работ, перечисленных отдельно (но все они выглядят одинаково: "run-job.sh $ ip"). Я должен использовать PS, чтобы увидеть, какая работа использует какое значение IP.)
Поведение, которое я хотел бы, такое же, как и то, что я получил бы, если бы начал все эти задания, набрав их по отдельности, а затем нажав control-z, чтобы поместить их в фоновый режим. Если я сделаю это таким образом, когда я выведу их на передний план с помощью fg, они позволят вводить данные пользователем непосредственно в процесс, а также переменная $ ip будет показана с оценкой «192.168.1.34». Тем не менее, ввод вручную заданий не представляется возможным для десятков или десятков заданий.