Is job-control inside a script only for sub-shells/child-processes or can I use it to control the job I started?
Sim. É o shell pai que faz o controle de trabalho, você não pode colocar o processo filho em primeiro plano de dentro de si mesmo.
Editar: No entanto, você ainda pode fazer assim:
-
script filho:
#! /bin/sh ... trap "kill -s USR1 $PPID" TTOU ... echo -n Cleanup? read yn </dev/tty ... -
script pai:
#! /bin/sh ... trap "fg %1" USR1 ... child & ... wait ...
Isso instala um manipulador de sinal para SIGTTOU no filho e outro
manipulador de sinal para SIGUSR1 no pai. Quando o filho tenta enviar algo para o terminal, ele recebe um SIGTTOU . Em seguida, ele envia um SIGUSR1 para o pai, que por sua vez executa fg %1 e coloca o filho em primeiro plano.
O acima assume %1 para ser o processo filho. Na prática, você provavelmente tem um único processo em segundo plano.