Como trazer um trabalho para o primeiro plano e permitir a entrada do usuário no terminal

Como trazer um trabalho para o primeiro plano e permitir a entrada do usuário no terminal

Igual aessa questãomas diferente em um aspecto importante: preciso iniciar vários trabalhos a partir de um script e executá-los em segundo plano. Então, para gerenciá-los ou verificar seu progresso, preciso trazê-los para o primeiro plano e permitir a entrada do usuário.

O que estou fazendo atualmente é:

  1. Inicie vários trabalhos em loop, por exemplo

    for ip in $(cat ip-list.txt); do run-job.sh $ip &; done
    
  2. Traga um trabalho individual para o primeiro plano, por exemplo

    fg 1 
    

Isso coloca um trabalho em primeiro plano, porém há dois problemas: não consigo fornecer a entrada do usuário - o processo não responde, como se o processo que recebe minha entrada fosse o script que iniciou o trabalho, e não o trabalho em si; também a variável $ip é exibida sem avaliação, ou seja, exatamente como "$ip" em vez de "192.168.1.34". No entanto, quando digito 'jobs', vejo todos os 10 trabalhos listados separadamente (mas todos parecem exatamente iguais: "run-job.sh $ip". Tenho que usar ps para ver qual trabalho está usando qual valor de ip.)

O comportamento que eu gostaria é o mesmo que obteria se iniciasse todos esses trabalhos digitando-os individualmente e, em seguida, pressionando control-z para colocá-los em segundo plano. Se eu fizer dessa forma, quando eu os trago para o primeiro plano com fg, eles permitem a entrada do usuário diretamente no processo, e também a variável $ip é mostrada avaliada como "192.168.1.34". No entanto, digitar manualmente os trabalhos não é viável para dezenas ou dezenas de trabalhos.

informação relacionada