Qual o efeito da precedência na execução da tarefa em segundo plano?

2

Os dois exemplos que tenho são:

echo hi &

E:

(echo hi &)

O primeiro fornecerá o id do processo como um resultado de retorno (por exemplo, "[1] 5627" ), em que a adição de operadores de precedência remove isso. O que está ocorrendo para causar isso?

Além disso, há uma maneira de adicionar precedência, mas ainda assim as tarefas em segundo plano informam o ID do processo?

    
por Jason 21.08.2015 / 07:53

1 resposta

3

Esta é uma pergunta sobre controle de trabalho . Por favor, leia a seção correspondente é man bash .

Em um parêntese de shell, há mais de operadores de precedência. Eles disparam um novo (sub) shell.

Você geralmente digita um shell interativo com o controle de tarefa ativado. Colocar um comando entre parênteses executa este comando em um subshell sem controle de tarefa.

Tente:

sleep 10&
jobs

(sleep 10&)
jobs

O primeiro sono é listado por jobs , já que é iniciado a partir de um shell ativado pelo controle de tarefa. O segundo não é, porque foi iniciado pelo subnível.

    
por 21.08.2015 / 08:41